Ver a proveniência

Site-wide English improvement. Reports now download in your selected language

debrand
Harry Groves há 5 dias
ascendente
cometimento
1afee174d3
57 ficheiros alterados com 1598 adições e 1195 eliminações
  1. +9
    -1
      src/main/java/com/ffii/core/utils/PdfUtils.java
  2. +13
    -0
      src/main/java/com/ffii/core/utils/ReportMessages.kt
  3. +17
    -0
      src/main/java/com/ffii/core/utils/UiText.kt
  4. +24
    -0
      src/main/java/com/ffii/fpsms/config/DefaultChineseLocale.java
  5. +17
    -15
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/OnPackTemplateFileService.kt
  6. +27
    -25
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt
  7. +17
    -15
      src/main/java/com/ffii/fpsms/modules/jobOrder/service/PsScheduleRuleService.kt
  8. +7
    -5
      src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt
  9. +3
    -1
      src/main/java/com/ffii/fpsms/modules/master/service/ItemDefaultShelfLifeService.kt
  10. +13
    -11
      src/main/java/com/ffii/fpsms/modules/master/service/ProductionScheduleService.kt
  11. +3
    -1
      src/main/java/com/ffii/fpsms/modules/monitoring/service/LabelPrinterMonitorService.kt
  12. +3
    -1
      src/main/java/com/ffii/fpsms/modules/monitoring/service/PrinterMonitorService.kt
  13. +17
    -16
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleApplier.kt
  14. +9
    -7
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleExcelSupport.kt
  15. +38
    -36
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleService.kt
  16. +37
    -35
      src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckService.kt
  17. +3
    -1
      src/main/java/com/ffii/fpsms/modules/pickOrder/web/TruckLaneScheduleController.kt
  18. +27
    -25
      src/main/java/com/ffii/fpsms/modules/report/service/LotExpiryAlertExcelBuilder.kt
  19. +7
    -3
      src/main/java/com/ffii/fpsms/modules/report/service/LotExpiryAlertReportService.kt
  20. +9
    -2
      src/main/java/com/ffii/fpsms/modules/report/service/ReportService.kt
  21. +17
    -15
      src/main/java/com/ffii/fpsms/modules/report/service/StockLedgerPdf.kt
  22. +9
    -7
      src/main/java/com/ffii/fpsms/modules/report/service/StockLedgerReportService.kt
  23. +9
    -7
      src/main/java/com/ffii/fpsms/modules/report/service/StockLotOnhandReportService.kt
  24. +34
    -16
      src/main/java/com/ffii/fpsms/modules/report/service/StockTakeVarianceReportService.kt
  25. +13
    -11
      src/main/java/com/ffii/fpsms/modules/report/web/DoInventoryUomMismatchReportController.kt
  26. +21
    -19
      src/main/java/com/ffii/fpsms/modules/report/web/DoUserPickAuditReportController.kt
  27. +15
    -13
      src/main/java/com/ffii/fpsms/modules/report/web/FGStockOutTraceabilityReportController.kt
  28. +24
    -22
      src/main/java/com/ffii/fpsms/modules/report/web/ItemQcFailReportController.kt
  29. +15
    -13
      src/main/java/com/ffii/fpsms/modules/report/web/MaterialStockOutTraceabilityReportController.kt
  30. +25
    -23
      src/main/java/com/ffii/fpsms/modules/report/web/ReportController.kt
  31. +38
    -36
      src/main/java/com/ffii/fpsms/modules/report/web/SemiFGProductionAnalysisReportController.kt
  32. +40
    -38
      src/main/java/com/ffii/fpsms/modules/report/web/StockItemConsumptionTrendReportController.kt
  33. +11
    -9
      src/main/java/com/ffii/fpsms/modules/report/web/StockLedgerReportController.kt
  34. +21
    -19
      src/main/java/com/ffii/fpsms/modules/report/web/StockLotOnhandReportController.kt
  35. +22
    -20
      src/main/java/com/ffii/fpsms/modules/report/web/StockTakeVarianceReportController.kt
  36. +3
    -1
      src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt
  37. +15
    -17
      src/main/resources/DeliveryNote/DeliveryNoteCartonLabelsPDF.jrxml
  38. +36
    -36
      src/main/resources/DeliveryNote/DeliveryNotePDF.jrxml
  39. +22
    -22
      src/main/resources/DeliveryNote/TruckRoutingSummaryPDF.jrxml
  40. +15
    -19
      src/main/resources/FGStockInLabel/FGStockInLabel.jrxml
  41. +44
    -44
      src/main/resources/PickRecord/PickRecordPDF.jrxml
  42. +134
    -0
      src/main/resources/i18n/reports.properties
  43. +134
    -0
      src/main/resources/i18n/reports_en.properties
  44. +43
    -43
      src/main/resources/jasper/FGDeliveryReport.jrxml
  45. +46
    -46
      src/main/resources/jasper/FGStockOutTraceabilityReport.jrxml
  46. +43
    -43
      src/main/resources/jasper/ItemQCReport.jrxml
  47. +43
    -43
      src/main/resources/jasper/MaterialStockOutTraceability.jrxml
  48. +67
    -67
      src/main/resources/jasper/SemiFGProductionAnalysisReport.jrxml
  49. +42
    -43
      src/main/resources/jasper/StockBalanceReport.jrxml
  50. +52
    -57
      src/main/resources/jasper/StockInTraceabilityReport.jrxml
  51. +67
    -67
      src/main/resources/jasper/StockItemConsumptionTrendReport.jrxml
  52. +45
    -46
      src/main/resources/jasper/StockLedgarReport.jrxml
  53. +37
    -37
      src/main/resources/jasper/StockTakeVarianceReport.jrxml
  54. +24
    -24
      src/main/resources/qrCodeLabel/poItemPDF.jrxml
  55. +24
    -24
      src/main/resources/qrCodeLabel/poItemPDF_v2.jrxml
  56. +24
    -24
      src/main/resources/qrCodeLabel/poItemPDF_v3.jrxml
  57. +24
    -24
      src/main/resources/qrCodeLabel/poItemPDF_v4.jrxml

+ 9
- 1
src/main/java/com/ffii/core/utils/PdfUtils.java Ver ficheiro

@@ -10,10 +10,13 @@ import java.util.List;


import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JREmptyDataSource; import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRParameter;
import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.data.JRMapCollectionDataSource; import net.sf.jasperreports.engine.data.JRMapCollectionDataSource;


import java.util.HashMap;

public class PdfUtils { public class PdfUtils {


public static JasperReport loadJasperReport(String path) throws Exception { public static JasperReport loadJasperReport(String path) throws Exception {
@@ -34,7 +37,12 @@ public class PdfUtils {
} else { } else {
dataSources = new JRBeanCollectionDataSource(loopList); dataSources = new JRBeanCollectionDataSource(loopList);
} }
JasperPrint jasperPrint = JasperFillManager.fillReport(report, params, dataSources);
Map<String, Object> filled = new HashMap<>();
if (params != null) {
filled.putAll(params);
}
filled.put(JRParameter.REPORT_RESOURCE_BUNDLE, ReportMessages.bundle());
JasperPrint jasperPrint = JasperFillManager.fillReport(report, filled, dataSources);
return jasperPrint; return jasperPrint;
} }



+ 13
- 0
src/main/java/com/ffii/core/utils/ReportMessages.kt Ver ficheiro

@@ -0,0 +1,13 @@
package com.ffii.core.utils

import java.util.Locale
import java.util.ResourceBundle

/** Jasper label bundle for the current request locale. Root bundle is Chinese. */
object ReportMessages {
@JvmStatic
fun bundle(): ResourceBundle {
val locale = if (UiText.isEnglish()) Locale.ENGLISH else Locale.CHINESE
return ResourceBundle.getBundle("i18n.reports", locale)
}
}

+ 17
- 0
src/main/java/com/ffii/core/utils/UiText.kt Ver ficheiro

@@ -0,0 +1,17 @@
package com.ffii.core.utils

import org.springframework.context.i18n.LocaleContextHolder

/**
* User-facing copy for the request locale.
* Chinese is the default. English is used only when the request language is English.
* Do not use this for values stored in the database or compared with stored data.
*/
object UiText {
@JvmStatic
fun isEnglish(): Boolean =
LocaleContextHolder.getLocale().language.equals("en", ignoreCase = true)

@JvmStatic
fun t(zh: String, en: String): String = if (isEnglish()) en else zh
}

+ 24
- 0
src/main/java/com/ffii/fpsms/config/DefaultChineseLocale.java Ver ficheiro

@@ -0,0 +1,24 @@
package com.ffii.fpsms.config;

import java.util.Locale;

import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;

/**
* The MVC config already creates {@code localeResolver}. A second bean with that
* name is rejected. This sets the existing resolver's default to Chinese when
* the request has no Accept-Language header.
*/
@Component
public class DefaultChineseLocale implements BeanPostProcessor {

@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
if (bean instanceof AcceptHeaderLocaleResolver resolver && "localeResolver".equals(beanName)) {
resolver.setDefaultLocale(Locale.CHINESE);
}
return bean;
}
}

+ 17
- 15
src/main/java/com/ffii/fpsms/modules/jobOrder/service/OnPackTemplateFileService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.jobOrder.service package com.ffii.fpsms.modules.jobOrder.service


import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.jobOrder.entity.OnPackTemplateFile import com.ffii.fpsms.modules.jobOrder.entity.OnPackTemplateFile
import com.ffii.fpsms.modules.jobOrder.entity.OnPackTemplateFileRepository import com.ffii.fpsms.modules.jobOrder.entity.OnPackTemplateFileRepository
@@ -67,15 +69,15 @@ open class OnPackTemplateFileService(
open fun upload(machineRaw: String, itemCodeRaw: String, files: List<MultipartFile>): OnPackTemplateUploadResponse { open fun upload(machineRaw: String, itemCodeRaw: String, files: List<MultipartFile>): OnPackTemplateUploadResponse {
val machine = normalizeMachine(machineRaw) val machine = normalizeMachine(machineRaw)
val itemCode = normalizeItemCode(itemCodeRaw) val itemCode = normalizeItemCode(itemCodeRaw)
require(files.isNotEmpty()) { "請選擇要上傳的檔案(.image / .bmp / .job)" }
require(files.isNotEmpty()) { UiText.t("請選擇要上傳的檔案(.image / .bmp / .job)", "Choose a file to upload (.image / .bmp / .job)") }
val saved = mutableListOf<String>() val saved = mutableListOf<String>()
files.forEach { part -> files.forEach { part ->
if (part.isEmpty) return@forEach if (part.isEmpty) return@forEach
val original = part.originalFilename ?: part.name val original = part.originalFilename ?: part.name
val storedName = storedFileName(machine, itemCode, original) val storedName = storedFileName(machine, itemCode, original)
val bytes = part.bytes val bytes = part.bytes
require(bytes.isNotEmpty()) { "空檔案:$original" }
require(bytes.size <= MAX_BYTES) { "檔案過大(上限 ${MAX_BYTES / (1024 * 1024)}MB):$original" }
require(bytes.isNotEmpty()) { UiText.t("空檔案:", "Empty file: ") + original }
require(bytes.size <= MAX_BYTES) { UiText.t("檔案過大(上限 ", "File is too large (limit ") + (MAX_BYTES / (1024 * 1024)) + "MB):" + original }
val row = try { val row = try {
repository.findByMachineAndItemCodeIgnoreCaseAndFileNameIgnoreCase( repository.findByMachineAndItemCodeIgnoreCaseAndFileNameIgnoreCase(
machine, machine,
@@ -88,7 +90,7 @@ open class OnPackTemplateFileService(
} }
} catch (e: DataAccessException) { } catch (e: DataAccessException) {
throw IllegalArgumentException( throw IllegalArgumentException(
"無法儲存 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。",
UiText.t("無法儲存 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。", "Could not save the OnPack template. Restart the backend so Liquibase can create onpack_template_file."),
e, e,
) )
} }
@@ -102,13 +104,13 @@ open class OnPackTemplateFileService(
repository.save(row) repository.save(row)
} catch (e: DataAccessException) { } catch (e: DataAccessException) {
throw IllegalArgumentException( throw IllegalArgumentException(
"無法儲存 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。",
UiText.t("無法儲存 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。", "Could not save the OnPack template. Restart the backend so Liquibase can create onpack_template_file."),
e, e,
) )
} }
saved.add(storedName) saved.add(storedName)
} }
require(saved.isNotEmpty()) { "沒有可儲存的檔案" }
require(saved.isNotEmpty()) { UiText.t("沒有可儲存的檔案", "There is no file to save") }
try { try {
ensureOnPackQrRow(itemCode, machine, saved) ensureOnPackQrRow(itemCode, machine, saved)
} catch (e: DataAccessException) { } catch (e: DataAccessException) {
@@ -120,10 +122,10 @@ open class OnPackTemplateFileService(
@Transactional @Transactional
open fun softDelete(id: Long) { open fun softDelete(id: Long) {
val row = try { val row = try {
repository.findById(id).orElseThrow { IllegalArgumentException("找不到該模板檔") }
repository.findById(id).orElseThrow { IllegalArgumentException(UiText.t("找不到該模板檔", "Template file not found")) }
} catch (e: DataAccessException) { } catch (e: DataAccessException) {
throw IllegalArgumentException( throw IllegalArgumentException(
"無法刪除 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。",
UiText.t("無法刪除 OnPack 模板。請重啟後端以執行 Liquibase(建立 onpack_template_file)。", "Could not delete the OnPack template. Restart the backend so Liquibase can create onpack_template_file."),
e, e,
) )
} }
@@ -241,7 +243,7 @@ open class OnPackTemplateFileService(
mapOf("machine" to machine, "code" to itemCode), mapOf("machine" to machine, "code" to itemCode),
) )
} catch (e: DataAccessException) { } catch (e: DataAccessException) {
throw IllegalStateException("無法儲存品號。請重啟後端以執行 Liquibase(建立 onpack_expiry_item_code)。", e)
throw IllegalStateException(UiText.t("無法儲存品號。請重啟後端以執行 Liquibase(建立 onpack_expiry_item_code)。", "Could not save the item code. Restart the backend so Liquibase can create onpack_expiry_item_code."), e)
} }
if (existing.isPresent) { if (existing.isPresent) {
val row = existing.get() val row = existing.get()
@@ -285,10 +287,10 @@ open class OnPackTemplateFileService(
mapOf("machine" to machine, "code" to itemCode, "printName" to stored), mapOf("machine" to machine, "code" to itemCode, "printName" to stored),
) )
if (n == 0) { if (n == 0) {
throw IllegalArgumentException("清單中沒有 $itemCode")
throw IllegalArgumentException(UiText.t("清單中沒有 ", "Item code is not in the list: ") + itemCode)
} }
} catch (e: DataAccessException) { } catch (e: DataAccessException) {
throw IllegalStateException("無法儲存列印名稱。請重啟後端以執行 Liquibase(printName 欄位)。", e)
throw IllegalStateException(UiText.t("無法儲存列印名稱。請重啟後端以執行 Liquibase(printName 欄位)。", "Could not save the print name. Restart the backend so Liquibase can add the printName column."), e)
} }
} }
if (body.useMinus18 != null) { if (body.useMinus18 != null) {
@@ -311,7 +313,7 @@ open class OnPackTemplateFileService(
mapOf("machine" to machine, "code" to itemCode), mapOf("machine" to machine, "code" to itemCode),
) )
} catch (e: DataAccessException) { } catch (e: DataAccessException) {
throw IllegalStateException("無法刪除品號。請重啟後端以執行 Liquibase(建立 onpack_expiry_item_code)。", e)
throw IllegalStateException(UiText.t("無法刪除品號。請重啟後端以執行 Liquibase(建立 onpack_expiry_item_code)。", "Could not delete the item code. Restart the backend so Liquibase can create onpack_expiry_item_code."), e)
} }
} }


@@ -499,13 +501,13 @@ open class OnPackTemplateFileService(
return when (v) { return when (v) {
MACHINE_JUICE, "bmp", "onpack2030", "汁水機" -> MACHINE_JUICE MACHINE_JUICE, "bmp", "onpack2030", "汁水機" -> MACHINE_JUICE
MACHINE_LEMON, "text", "onpack2030_2", "檸檬機" -> MACHINE_LEMON MACHINE_LEMON, "text", "onpack2030_2", "檸檬機" -> MACHINE_LEMON
else -> throw IllegalArgumentException("machine 必須是 juice(汁水機)或 lemon(檸檬機)")
else -> throw IllegalArgumentException(UiText.t("machine 必須是 juice(汁水機)或 lemon(檸檬機)", "machine must be juice or lemon"))
} }
} }


fun normalizeItemCode(raw: String): String { fun normalizeItemCode(raw: String): String {
val code = raw.trim().uppercase() val code = raw.trim().uppercase()
require(ITEM_CODE.matches(code)) { "品號格式不正確:$raw" }
require(ITEM_CODE.matches(code)) { UiText.t("品號格式不正確:", "Invalid item code: ") + raw }
return code return code
} }


@@ -520,7 +522,7 @@ open class OnPackTemplateFileService(


fun storedFileName(machine: String, itemCode: String, originalName: String): String { fun storedFileName(machine: String, itemCode: String, originalName: String): String {
val safe = sanitizeFileName(originalName) val safe = sanitizeFileName(originalName)
?: throw IllegalArgumentException("不支援的檔名(只接受 .image / .bmp / .job):$originalName")
?: throw IllegalArgumentException(UiText.t("不支援的檔名(只接受 .image / .bmp / .job):", "Unsupported file name (only .image / .bmp / .job): ") + originalName)
return if (safe.endsWith(".image", ignoreCase = true)) { return if (safe.endsWith(".image", ignoreCase = true)) {
if (machine == MACHINE_LEMON) "${itemCode.uppercase()}.image" if (machine == MACHINE_LEMON) "${itemCode.uppercase()}.image"
else "${itemCode.lowercase()}.image" else "${itemCode.lowercase()}.image"


+ 27
- 25
src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.jobOrder.service package com.ffii.fpsms.modules.jobOrder.service


import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.common.SettingNames import com.ffii.fpsms.modules.common.SettingNames
import com.ffii.fpsms.modules.jobOrder.entity.JobOrder import com.ffii.fpsms.modules.jobOrder.entity.JobOrder
@@ -348,7 +350,7 @@ class PlasticBagPrinterService(
logger.error("sendLaserBag2Job unexpected error", e) logger.error("sendLaserBag2Job unexpected error", e)
LaserBag2SendResponse( LaserBag2SendResponse(
success = false, success = false,
message = "送出失敗:${e.message ?: e.javaClass.simpleName}",
message = UiText.t("送出失敗:", "Send failed: ") + (e.message ?: e.javaClass.simpleName),
) )
} }
} }
@@ -501,24 +503,24 @@ class PlasticBagPrinterService(
if (laserAckLooksInvalid(ackRaw)) { if (laserAckLooksInvalid(ackRaw)) {
return LaserBag2TcpResult( return LaserBag2TcpResult(
false, false,
"檸檬機回覆 invalid,未接受指令。",
UiText.t("檸檬機回覆 invalid,未接受指令。", "The lemon printer replied invalid and did not accept the command."),
payload, payload,
ackRaw, ackRaw,
false, false,
) )
} }
val msg = if (receiveAck) { val msg = if (receiveAck) {
"已送出激光機:$payload(已確認)"
UiText.t("已送出激光機:", "Sent to the laser printer: ") + payload + UiText.t("(已確認)", " (confirmed)")
} else { } else {
"已送出激光機:$payload"
UiText.t("已送出激光機:", "Sent to the laser printer: ") + payload
} }
return LaserBag2TcpResult(true, msg, payload, ackRaw, receiveAck) return LaserBag2TcpResult(true, msg, payload, ackRaw, receiveAck)
} catch (e: ConnectException) { } catch (e: ConnectException) {
return LaserBag2TcpResult(false, "無法連線至 $ip:$port,請確認激光機已開機且 IP 正確。", payload, null, false)
return LaserBag2TcpResult(false, UiText.t("無法連線至 ", "Could not connect to ") + ip + ":" + port + UiText.t(",請確認激光機已開機且 IP 正確。", ". Check that the printer is on and the IP is correct."), payload, null, false)
} catch (e: SocketTimeoutException) { } catch (e: SocketTimeoutException) {
return LaserBag2TcpResult(false, "連線逾時 ($ip:$port),請檢查網路與連接埠。", payload, null, false)
return LaserBag2TcpResult(false, UiText.t("連線逾時 (", "Connection timed out (") + ip + ":" + port + UiText.t("),請檢查網路與連接埠。", "). Check the network and port."), payload, null, false)
} catch (e: Exception) { } catch (e: Exception) {
return LaserBag2TcpResult(false, "激光機送出失敗:${e.message}", payload, null, false)
return LaserBag2TcpResult(false, UiText.t("激光機送出失敗:", "Laser printer send failed: ") + (e.message), payload, null, false)
} finally { } finally {
try { try {
Thread.sleep(100) Thread.sleep(100)
@@ -590,9 +592,9 @@ class PlasticBagPrinterService(
} }
return raw to null return raw to null
} catch (e: ConnectException) { } catch (e: ConnectException) {
return null to "無法連線"
return null to UiText.t("無法連線", "Could not connect")
} catch (e: SocketTimeoutException) { } catch (e: SocketTimeoutException) {
return null to "讀取逾時"
return null to UiText.t("讀取逾時", "Read timed out")
} catch (e: Exception) { } catch (e: Exception) {
return null to (e.message ?: e.javaClass.simpleName) return null to (e.message ?: e.javaClass.simpleName)
} finally { } finally {
@@ -611,9 +613,9 @@ class PlasticBagPrinterService(
} }


private fun markStatusToLabel(v: Int?): String? = when (v) { private fun markStatusToLabel(v: Int?): String? = when (v) {
0 -> "待機"
1 -> "打標中"
2 -> "其他狀態"
0 -> UiText.t("待機", "Idle")
1 -> UiText.t("打標中", "Marking")
2 -> UiText.t("其他狀態", "Other status")
else -> null else -> null
} }


@@ -770,7 +772,7 @@ class PlasticBagPrinterService(
.mapNotNull { (it["jobOrderId"] as? Number)?.toLong() } .mapNotNull { (it["jobOrderId"] as? Number)?.toLong() }
.toSet() .toSet()
val packagingJobOrders = normalizedJobOrders.filter { it.jobOrderId in allowedJobOrderIds } val packagingJobOrders = normalizedJobOrders.filter { it.jobOrderId in allowedJobOrderIds }
require(packagingJobOrders.isNotEmpty()) { "No 包裝 process job orders found for export" }
require(packagingJobOrders.isNotEmpty()) { UiText.t("No 包裝 process job orders found for export", "No packing-process job orders found for export") }


val expiryPrintNames = if (includeExpiry) { val expiryPrintNames = if (includeExpiry) {
onPackTemplateFileService.expiryPrintNames(OnPackTemplateFileService.MACHINE_JUICE) onPackTemplateFileService.expiryPrintNames(OnPackTemplateFileService.MACHINE_JUICE)
@@ -820,7 +822,7 @@ class PlasticBagPrinterService(


require(exportItemsListed.isNotEmpty()) { require(exportItemsListed.isNotEmpty()) {
if (includeExpiry) { if (includeExpiry) {
"當日工單沒有在汁水機到期日 ZIP 品號清單中的項目(OnPack 模板可管理此清單)"
UiText.t("當日工單沒有在汁水機到期日 ZIP 品號清單中的項目(OnPack 模板可管理此清單)", "Today's job orders have no item codes on the juice expiry ZIP list. Manage that list in OnPack templates.")
} else { } else {
"No OnPack QR (bmp) rows in onpack_qr for the selected job orders, or no matching templates" "No OnPack QR (bmp) rows in onpack_qr for the selected job orders, or no matching templates"
} }
@@ -847,9 +849,9 @@ class PlasticBagPrinterService(


require(exportItems.isNotEmpty()) { require(exportItems.isNotEmpty()) {
if (includeExpiry && skippedWithoutExpiry.isNotEmpty()) { if (includeExpiry && skippedWithoutExpiry.isNotEmpty()) {
"當日汁水機清單品號都沒有預設保質期,無法產生到期日 ZIP。請到設定 → 物品預設保質期新增:${skippedWithoutExpiry.joinToString("、")}"
UiText.t("當日汁水機清單品號都沒有預設保質期,無法產生到期日 ZIP。請到設定 → 物品預設保質期新增:", "None of today's juice-list item codes have a default shelf life, so the expiry ZIP cannot be created. Add them under Settings, item default shelf life: ") + (skippedWithoutExpiry.joinToString("、"))
} else if (includeExpiry) { } else if (includeExpiry) {
"當日工單沒有在汁水機到期日 ZIP 品號清單中的項目(OnPack 模板可管理此清單)"
UiText.t("當日工單沒有在汁水機到期日 ZIP 品號清單中的項目(OnPack 模板可管理此清單)", "Today's job orders have no item codes on the juice expiry ZIP list. Manage that list in OnPack templates.")
} else { } else {
"No OnPack QR (bmp) rows in onpack_qr for the selected job orders, or no matching templates" "No OnPack QR (bmp) rows in onpack_qr for the selected job orders, or no matching templates"
} }
@@ -858,7 +860,7 @@ class PlasticBagPrinterService(
val expiryMasterImage = if (includeExpiry) loadPp1181ExpiryMasterImage() else null val expiryMasterImage = if (includeExpiry) loadPp1181ExpiryMasterImage() else null
val expiryMasterJob = if (includeExpiry) loadPp1181MasterJob() else null val expiryMasterJob = if (includeExpiry) loadPp1181MasterJob() else null
if (includeExpiry) { if (includeExpiry) {
require(expiryMasterImage != null) { "找不到 PP1181 到期日主模板(onpack2030_exp/pp1181.image)" }
require(expiryMasterImage != null) { UiText.t("找不到 PP1181 到期日主模板(onpack2030_exp/pp1181.image)", "The PP1181 expiry master template was not found (onpack2030_exp/pp1181.image)") }
} }


val baos = ByteArrayOutputStream() val baos = ByteArrayOutputStream()
@@ -1013,7 +1015,7 @@ class PlasticBagPrinterService(
.mapNotNull { (it["jobOrderId"] as? Number)?.toLong() } .mapNotNull { (it["jobOrderId"] as? Number)?.toLong() }
.toSet() .toSet()
val packagingJobOrders = normalizedJobOrders.filter { it.jobOrderId in allowedJobOrderIds } val packagingJobOrders = normalizedJobOrders.filter { it.jobOrderId in allowedJobOrderIds }
require(packagingJobOrders.isNotEmpty()) { "No 包裝 process job orders found for export" }
require(packagingJobOrders.isNotEmpty()) { UiText.t("No 包裝 process job orders found for export", "No packing-process job orders found for export") }


val exportItemsRaw = packagingJobOrders val exportItemsRaw = packagingJobOrders
.groupBy { it.itemCode.trim().lowercase() } .groupBy { it.itemCode.trim().lowercase() }
@@ -1053,7 +1055,7 @@ class PlasticBagPrinterService(


require(exportItems.isNotEmpty()) { require(exportItems.isNotEmpty()) {
if (includeExpiry && skippedWithoutExpiry.isNotEmpty()) { if (includeExpiry && skippedWithoutExpiry.isNotEmpty()) {
"當日檸檬機品號都沒有預設保質期,無法產生到期日 ZIP。請到設定 → 物品預設保質期新增:${skippedWithoutExpiry.joinToString("、")}"
UiText.t("當日檸檬機品號都沒有預設保質期,無法產生到期日 ZIP。請到設定 → 物品預設保質期新增:", "None of today's lemon item codes have a default shelf life, so the expiry ZIP cannot be created. Add them under Settings, item default shelf life: ") + (skippedWithoutExpiry.joinToString("、"))
} else { } else {
"No OnPack QR (text) rows in onpack_qr for the selected job orders, or no matching templates" "No OnPack QR (text) rows in onpack_qr for the selected job orders, or no matching templates"
} }
@@ -1484,14 +1486,14 @@ class PlasticBagPrinterService(
return try { return try {
Socket().use { socket -> Socket().use { socket ->
socket.connect(InetSocketAddress(ip, port), 3000) socket.connect(InetSocketAddress(ip, port), 3000)
true to "$printerName 已連線($ip:$port)"
true to printerName + UiText.t(" 已連線(", " is connected (") + ip + ":" + port + ")"
} }
} catch (e: SocketTimeoutException) { } catch (e: SocketTimeoutException) {
false to "$printerName 連線逾時($ip:$port)"
false to printerName + UiText.t(" 連線逾時(", " timed out (") + ip + ":" + port + ")"
} catch (e: ConnectException) { } catch (e: ConnectException) {
false to "$printerName 無法連線($ip:$port)"
false to printerName + UiText.t(" 無法連線(", " could not connect (") + ip + ":" + port + ")"
} catch (e: Exception) { } catch (e: Exception) {
false to "$printerName 連線失敗($ip:$port):${e.message}"
false to printerName + UiText.t(" 連線失敗(", " connection failed (") + ip + ":" + port + "):" + (e.message)
} }
} }


@@ -1719,7 +1721,7 @@ class PlasticBagPrinterService(
var reader: BufferedReader? = null var reader: BufferedReader? = null


try { try {
println("Han's Laser TCP: 正在連接 $ip:$port ...")
println(UiText.t("Han's Laser TCP: 正在連接 ", "Han's Laser TCP: connecting to ") + ip + ":" + port + " ...")
socket = Socket(ip, port).apply { socket = Socket(ip, port).apply {
soTimeout = 8000 // 8秒超時,避免卡死 soTimeout = 8000 // 8秒超時,避免卡死
} }
@@ -1734,7 +1736,7 @@ class PlasticBagPrinterService(
Thread.sleep(300) // give device time to process Thread.sleep(300) // give device time to process


val resp = reader.readLine()?.trim() ?: "" val resp = reader.readLine()?.trim() ?: ""
println("命令: $cmd → 回應: $resp")
println(UiText.t("命令: ", "Command: ") + cmd + UiText.t(" → 回應: ", " → response: ") + resp)
return resp.startsWith("OK") return resp.startsWith("OK")
} }




+ 17
- 15
src/main/java/com/ffii/fpsms/modules/jobOrder/service/PsScheduleRuleService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.jobOrder.service package com.ffii.fpsms.modules.jobOrder.service


import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import java.time.DayOfWeek import java.time.DayOfWeek
@@ -132,13 +134,13 @@ open class PsScheduleRuleService(
} }


fun savePlantRules(request: SavePsPlantRulesRequest) { fun savePlantRules(request: SavePsPlantRulesRequest) {
requireDays(request.redLineDays, request.safetyStockDays, "一般日")
requireDays(request.prepareMoreRedLineDays, request.prepareMoreSafetyStockDays, "多備日")
val coffee = requireProduceDays(request.coffeeDays, "類別 A")
val tea = requireProduceDays(request.teaDays, "類別 B")
val lemon = requireProduceDays(request.lemonDays, "類別 C")
val prepareMore = parseDaysStrict(request.prepareMoreDays, "多備星期")
val noProduction = parseDaysStrict(request.noProductionDays, "不生產星期")
requireDays(request.redLineDays, request.safetyStockDays, UiText.t("一般日", "Normal days"))
requireDays(request.prepareMoreRedLineDays, request.prepareMoreSafetyStockDays, UiText.t("多備日", "Extra-prep days"))
val coffee = requireProduceDays(request.coffeeDays, UiText.t("類別 A", "Category A"))
val tea = requireProduceDays(request.teaDays, UiText.t("類別 B", "Category B"))
val lemon = requireProduceDays(request.lemonDays, UiText.t("類別 C", "Category C"))
val prepareMore = parseDaysStrict(request.prepareMoreDays, UiText.t("多備星期", "Extra-prep weekdays"))
val noProduction = parseDaysStrict(request.noProductionDays, UiText.t("不生產星期", "Non-production weekdays"))


upsert(RED_LINE, formatNumber(request.redLineDays), "float") upsert(RED_LINE, formatNumber(request.redLineDays), "float")
upsert(SAFETY, formatNumber(request.safetyStockDays), "float") upsert(SAFETY, formatNumber(request.safetyStockDays), "float")
@@ -163,8 +165,8 @@ open class PsScheduleRuleService(
if (red != null && safety != null) { if (red != null && safety != null) {
requireDays(red, safety, itemCode) requireDays(red, safety, itemCode)
} else { } else {
red?.let { requirePositive(it, "$itemCode 觸發日") }
safety?.let { requirePositive(it, "$itemCode 補貨日") }
red?.let { requirePositive(it, itemCode + UiText.t(" 觸發日", " trigger days")) }
safety?.let { requirePositive(it, itemCode + UiText.t(" 補貨日", " replenishment days")) }
} }
} }
val produceDays = if (request.useCustomProduceDays) { val produceDays = if (request.useCustomProduceDays) {
@@ -257,29 +259,29 @@ open class PsScheduleRuleService(
} }


private fun requireDays(redLine: Double, safety: Double, label: String) { private fun requireDays(redLine: Double, safety: Double, label: String) {
requirePositive(redLine, "$label 觸發日")
requirePositive(safety, "$label 補貨日")
requirePositive(redLine, label + UiText.t(" 觸發日", " trigger days"))
requirePositive(safety, label + UiText.t(" 補貨日", " replenishment days"))
if (redLine > safety) { if (redLine > safety) {
throw IllegalArgumentException("$label:觸發日不可大於補貨日")
throw IllegalArgumentException(label + UiText.t(":觸發日不可大於補貨日", ": trigger days cannot be greater than replenishment days"))
} }
} }


private fun requirePositive(value: Double, label: String) { private fun requirePositive(value: Double, label: String) {
if (!value.isFinite() || value <= 0.0) { if (!value.isFinite() || value <= 0.0) {
throw IllegalArgumentException("$label 必須大於 0")
throw IllegalArgumentException(label + UiText.t(" 必須大於 0", " must be greater than 0"))
} }
} }


private fun requireProduceDays(tokens: List<String>, label: String): Set<DayOfWeek> { private fun requireProduceDays(tokens: List<String>, label: String): Set<DayOfWeek> {
val days = parseDaysStrict(tokens, label) val days = parseDaysStrict(tokens, label)
if (days.isEmpty()) throw IllegalArgumentException("$label 至少要選一天可生產")
if (days.isEmpty()) throw IllegalArgumentException(label + UiText.t(" 至少要選一天可生產", " must include at least one production day"))
return days return days
} }


private fun parseDaysStrict(tokens: List<String>, label: String): Set<DayOfWeek> { private fun parseDaysStrict(tokens: List<String>, label: String): Set<DayOfWeek> {
val unknown = tokens.map { it.trim().uppercase() }.filter { it.isNotEmpty() && it !in DAY_TOKENS } val unknown = tokens.map { it.trim().uppercase() }.filter { it.isNotEmpty() && it !in DAY_TOKENS }
if (unknown.isNotEmpty()) { if (unknown.isNotEmpty()) {
throw IllegalArgumentException("$label 有無法辨識的星期: ${unknown.joinToString(",")}")
throw IllegalArgumentException(label + UiText.t(" 有無法辨識的星期: ", " has an unknown weekday: ") + (unknown.joinToString(",")))
} }
return parseDays(tokens.joinToString(",")) return parseDays(tokens.joinToString(","))
} }


+ 7
- 5
src/main/java/com/ffii/fpsms/modules/jobOrder/web/PlasticBagPrinterController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.jobOrder.web package com.ffii.fpsms.modules.jobOrder.web


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.jobOrder.service.LaserBag2AutoSendService import com.ffii.fpsms.modules.jobOrder.service.LaserBag2AutoSendService
import com.ffii.fpsms.modules.jobOrder.service.OnPackZipResult import com.ffii.fpsms.modules.jobOrder.service.OnPackZipResult
import com.ffii.fpsms.modules.jobOrder.service.PlasticBagPrinterService import com.ffii.fpsms.modules.jobOrder.service.PlasticBagPrinterService
@@ -72,7 +74,7 @@ class PlasticBagPrinterController(
logger.error("print-laser-bag2 failed", e) logger.error("print-laser-bag2 failed", e)
LaserBag2SendResponse( LaserBag2SendResponse(
success = false, success = false,
message = "送出失敗:${e.message ?: e.javaClass.simpleName}",
message = UiText.t("送出失敗:", "Send failed: ") + (e.message ?: e.javaClass.simpleName),
) )
} }
return if (resp.success) { return if (resp.success) {
@@ -368,18 +370,18 @@ class PlasticBagPrinterController(
ip = request.printerIp, ip = request.printerIp,
port = request.printerPort.toInt(), port = request.printerPort.toInt(),
textChannel3 = request.textChannel3 textChannel3 = request.textChannel3
?: throw IllegalArgumentException("缺少 textChannel3"),
?: throw IllegalArgumentException(UiText.t("缺少 textChannel3", "textChannel3 is missing")),
textChannel4 = request.textChannel4 textChannel4 = request.textChannel4
?: throw IllegalArgumentException("缺少 textChannel4"),
?: throw IllegalArgumentException(UiText.t("缺少 textChannel4", "textChannel4 is missing")),
text3ObjectName = request.text3ObjectName ?: "Text3", text3ObjectName = request.text3ObjectName ?: "Text3",
text4ObjectName = request.text4ObjectName ?: "Text4" text4ObjectName = request.text4ObjectName ?: "Text4"
) )


if (success) { if (success) {
ResponseEntity.ok("Han's Laser TCP: 更新文字並觸發打標成功")
ResponseEntity.ok(UiText.t("Han's Laser TCP: 更新文字並觸發打標成功", "Han's Laser TCP: text updated and marking started"))
} else { } else {
ResponseEntity.status(500) ResponseEntity.status(500)
.body("Han's Laser TCP: 部分或全部命令失敗,請檢查連接、物件名稱或 EZCAD TCP Server")
.body(UiText.t("Han's Laser TCP: 部分或全部命令失敗,請檢查連接、物件名稱或 EZCAD TCP Server", "Han's Laser TCP: one or more commands failed. Check the connection, object name, or EZCAD TCP server."))
} }
} catch (e: Exception) { } catch (e: Exception) {
ResponseEntity.status(500).body("Laser TCP Error: ${e.message}") ResponseEntity.status(500).body("Laser TCP Error: ${e.message}")


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/master/service/ItemDefaultShelfLifeService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.master.service package com.ffii.fpsms.modules.master.service


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.master.entity.ItemDefaultShelfLife import com.ffii.fpsms.modules.master.entity.ItemDefaultShelfLife
import com.ffii.fpsms.modules.master.entity.ItemDefaultShelfLifeRepository import com.ffii.fpsms.modules.master.entity.ItemDefaultShelfLifeRepository
import com.ffii.fpsms.modules.master.entity.ItemsRepository import com.ffii.fpsms.modules.master.entity.ItemsRepository
@@ -71,7 +73,7 @@ open class ItemDefaultShelfLifeService(
val row = repository.findByDeletedFalseAndItemCodeIgnoreCase(code) val row = repository.findByDeletedFalseAndItemCodeIgnoreCase(code)
?: throw ResponseStatusException( ?: throw ResponseStatusException(
HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST,
"找不到 $code 的預設保質期。請先到設定 → 物品預設保質期新增。",
UiText.t("找不到 ", "No default shelf life for ") + code + UiText.t(" 的預設保質期。請先到設定 → 物品預設保質期新增。", ". Add it under Settings, item default shelf life."),
) )
row.useMinus18 = useMinus18 row.useMinus18 = useMinus18
return toRow(repository.save(row)) return toRow(repository.save(row))


+ 13
- 11
src/main/java/com/ffii/fpsms/modules/master/service/ProductionScheduleService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.master.service package com.ffii.fpsms.modules.master.service


import com.ffii.core.utils.UiText

import com.ffii.core.response.RecordsRes import com.ffii.core.response.RecordsRes
import com.ffii.core.support.AbstractBaseEntityService import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
@@ -483,9 +485,9 @@ open class ProductionScheduleService(
return MessageResponse( return MessageResponse(
id = request.id.toLong(), id = request.id.toLong(),
message = if (jobOrderCount == 0) message = if (jobOrderCount == 0)
"沒有建立新工單(可能因為成品已有生產中的工單)."
UiText.t("沒有建立新工單(可能因為成品已有生產中的工單).", "No job order was created. The finished good may already have a job order in production.")
else else
"成功建立 $jobOrderCount 張工單!",
UiText.t("成功建立 ", "Created ") + jobOrderCount + UiText.t(" 張工單!", " job orders."),
name = "", name = "",
code = jobOrderCount.toString(), code = jobOrderCount.toString(),
type = "psJobOrders", type = "psJobOrders",
@@ -1494,8 +1496,8 @@ open class ProductionScheduleService(
val sheet = workbook.createSheet(safeSheetName) val sheet = workbook.createSheet(safeSheetName)


val headers = listOf( val headers = listOf(
"物料編號", "物料名稱", "每日平均出貨量", "出貨前預計存貨量", "可用日",
"每批數量", "生產量(批)", "優先度"
UiText.t("物料編號", "Material code"), UiText.t("物料名稱", "Material name"), UiText.t("每日平均出貨量", "Avg daily shipments"), UiText.t("出貨前預計存貨量", "Expected stock before shipment"), UiText.t("可用日", "Days of cover"),
UiText.t("每批數量", "Qty per batch"), UiText.t("生產量(批)", "Production (batches)"), UiText.t("優先度", "Priority")
) )


// Header row // Header row
@@ -1559,13 +1561,13 @@ open class ProductionScheduleService(
} }


// ── MATERIAL SUMMARY SHEET ── // ── MATERIAL SUMMARY SHEET ──
val matSheet = workbook.createSheet("物料用量總結")
val matSheet = workbook.createSheet(UiText.t("物料用量總結", "Material usage summary"))


val matHeaders = listOf( val matHeaders = listOf(
"物料編號", "物料名稱", "需求量", "總用量",
"單位", "數量(採購單位)", "採購單位",
"已採購數量", "庫存數", "庫存單位",
"相關成品編號", "相關成品名稱"
UiText.t("物料編號", "Material code"), UiText.t("物料名稱", "Material name"), UiText.t("需求量", "Required qty"), UiText.t("總用量", "Total usage"),
UiText.t("單位", "UOM"), UiText.t("數量(採購單位)", "Qty (purchase UOM)"), UiText.t("採購單位", "Purchase UOM"),
UiText.t("已採購數量", "Purchased qty"), UiText.t("庫存數", "On hand"), UiText.t("庫存單位", "Stock UOM"),
UiText.t("相關成品編號", "Related finished-good code"), UiText.t("相關成品名稱", "Related finished-good name")
) )


val matHeaderRow = matSheet.createRow(0) val matHeaderRow = matSheet.createRow(0)
@@ -1651,7 +1653,7 @@ open class ProductionScheduleService(
matSheet.setMargin(Sheet.BottomMargin, 0.7) matSheet.setMargin(Sheet.BottomMargin, 0.7)


// ── DAILY MATERIAL NEEDS SHEET ── // ── DAILY MATERIAL NEEDS SHEET ──
val dailySheet = workbook.createSheet("每天物料用量")
val dailySheet = workbook.createSheet(UiText.t("每天物料用量", "Daily material usage"))


val dateFormatterDayMonth = DateTimeFormatter.ofPattern("d MMM", Locale.ENGLISH) val dateFormatterDayMonth = DateTimeFormatter.ofPattern("d MMM", Locale.ENGLISH)
val dateFormatterDayName = DateTimeFormatter.ofPattern("EEEE", Locale.ENGLISH) val dateFormatterDayName = DateTimeFormatter.ofPattern("EEEE", Locale.ENGLISH)
@@ -1666,7 +1668,7 @@ open class ProductionScheduleService(
val headerRow1 = dailySheet.createRow(0) val headerRow1 = dailySheet.createRow(0)
val headerRow2 = dailySheet.createRow(1) val headerRow2 = dailySheet.createRow(1)


val baseHeaders = listOf("物料編號", "物料名稱", "採購單位")
val baseHeaders = listOf(UiText.t("物料編號", "Material code"), UiText.t("物料名稱", "Material name"), UiText.t("採購單位", "Purchase UOM"))


baseHeaders.forEachIndexed { i, title -> baseHeaders.forEachIndexed { i, title ->
headerRow1.createCell(i).apply { setCellValue(title); cellStyle = headerStyle } headerRow1.createCell(i).apply { setCellValue(title); cellStyle = headerStyle }


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/monitoring/service/LabelPrinterMonitorService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.monitoring.service package com.ffii.fpsms.modules.monitoring.service


import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.master.entity.Printer import com.ffii.fpsms.modules.master.entity.Printer
import com.ffii.fpsms.modules.master.entity.PrinterRepository import com.ffii.fpsms.modules.master.entity.PrinterRepository
@@ -395,7 +397,7 @@ open class LabelPrinterMonitorService(


private fun probeTcp(ip: String, port: Int): ProbeResult { private fun probeTcp(ip: String, port: Int): ProbeResult {
if (ip.isBlank()) { if (ip.isBlank()) {
return ProbeResult(reachable = false, latencyMs = null, errorMessage = "未設定 IP")
return ProbeResult(reachable = false, latencyMs = null, errorMessage = UiText.t("未設定 IP", "IP address is not set"))
} }
val start = System.currentTimeMillis() val start = System.currentTimeMillis()
return try { return try {


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/monitoring/service/PrinterMonitorService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.monitoring.service package com.ffii.fpsms.modules.monitoring.service


import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import com.ffii.fpsms.modules.master.entity.Printer import com.ffii.fpsms.modules.master.entity.Printer
import com.ffii.fpsms.modules.master.entity.PrinterRepository import com.ffii.fpsms.modules.master.entity.PrinterRepository
@@ -208,7 +210,7 @@ open class PrinterMonitorService(
status = "unconfigured", status = "unconfigured",
reachable = null, reachable = null,
latencyMs = null, latencyMs = null,
errorMessage = "未設定 IP",
errorMessage = UiText.t("未設定 IP", "IP address is not set"),
) )
} }
val port = printer.port ?: defaultPort val port = printer.port ?: defaultPort


+ 17
- 16
src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleApplier.kt Ver ficheiro

@@ -1,5 +1,6 @@
package com.ffii.fpsms.modules.pickOrder.service package com.ffii.fpsms.modules.pickOrder.service


import com.ffii.core.utils.UiText
import com.ffii.fpsms.modules.pickOrder.entity.* import com.ffii.fpsms.modules.pickOrder.entity.*
import com.ffii.fpsms.modules.pickOrder.support.isOptimisticLockFailure import com.ffii.fpsms.modules.pickOrder.support.isOptimisticLockFailure
import com.ffii.fpsms.modules.pickOrder.web.models.CreateTruckLaneSnapshotRequest import com.ffii.fpsms.modules.pickOrder.web.models.CreateTruckLaneSnapshotRequest
@@ -75,7 +76,7 @@ open class TruckLaneScheduleApplier(
truckLaneVersionService.createSnapshot( truckLaneVersionService.createSnapshot(
CreateTruckLaneSnapshotRequest( CreateTruckLaneSnapshotRequest(
truckLanceCode = null, truckLanceCode = null,
note = "排程 #${schedule.id} 套用前快照 ${schedule.executeAt}",
note = UiText.t("排程 #", "Schedule #") + (schedule.id) + UiText.t(" 套用前快照 ", " pre-apply snapshot ") + (schedule.executeAt),
createdBy = schedule.createdBy, createdBy = schedule.createdBy,
), ),
) )
@@ -99,11 +100,11 @@ open class TruckLaneScheduleApplier(
truckLaneVersionService.createSnapshot( truckLaneVersionService.createSnapshot(
CreateTruckLaneSnapshotRequest( CreateTruckLaneSnapshotRequest(
truckLanceCode = null, truckLanceCode = null,
note = "排程 #${schedule.id} 套用 (${
note = UiText.t("排程 #", "Schedule #") + (schedule.id) + UiText.t(" 套用 (", " applied (") + (
lines.count { lines.count {
it.lineStatus == TruckLaneScheduleLineStatus.APPLIED it.lineStatus == TruckLaneScheduleLineStatus.APPLIED
} }
} 列) ${schedule.executeAt}",
) + UiText.t(" 列) ", " rows) ") + (schedule.executeAt),
createdBy = schedule.createdBy, createdBy = schedule.createdBy,
), ),
) )
@@ -262,7 +263,7 @@ open class TruckLaneScheduleApplier(


val restoreSuffix = val restoreSuffix =
if (preApplySnapshotId != null) { if (preApplySnapshotId != null) {
";已還原 snapshot #$preApplySnapshotId${restoreNote?.let { " ($it)" } ?: ""}"
UiText.t(";已還原 snapshot #", "; restored snapshot #") + preApplySnapshotId + (restoreNote?.let { " ($it)" } ?: "")
} else { } else {
"" ""
} }
@@ -310,7 +311,7 @@ open class TruckLaneScheduleApplier(
private fun applyEnsureLane(line: TruckLaneScheduleLine): String? { private fun applyEnsureLane(line: TruckLaneScheduleLine): String? {
val toKey = truckService.toBucketKey(line) val toKey = truckService.toBucketKey(line)
if (truckService.trucksInLaneBucket(toKey).isNotEmpty()) { if (truckService.trucksInLaneBucket(toKey).isNotEmpty()) {
return "車線已存在,跳過建立"
return UiText.t("車線已存在,跳過建立", "Truck lane already exists. Creation was skipped.")
} }
ensureTargetLaneIfEmpty(line, fallbackDeparture = null) ensureTargetLaneIfEmpty(line, fallbackDeparture = null)
return null return null
@@ -330,7 +331,7 @@ open class TruckLaneScheduleApplier(
line.departureTime line.departureTime
?: fallbackDeparture ?: fallbackDeparture
?: throw IllegalArgumentException( ?: throw IllegalArgumentException(
"目標車線 ${toKey.truckLanceCode} 不存在或尚無任何列,且排程未提供 departureTime",
UiText.t("目標車線 ", "Target truck lane ") + (toKey.truckLanceCode) + UiText.t(" 不存在或尚無任何列,且排程未提供 departureTime", " does not exist or has no rows, and the schedule has no departure time"),
) )
truckService.createTruckWithoutShop( truckService.createTruckWithoutShop(
CreateTruckWithoutShopRequest( CreateTruckWithoutShopRequest(
@@ -343,15 +344,15 @@ open class TruckLaneScheduleApplier(
logisticId = line.logisticId, logisticId = line.logisticId,
), ),
) )
return "已自動建立空白車線 ${toKey.truckLanceCode}"
return UiText.t("已自動建立空白車線 ", "Created a blank truck lane ") + (toKey.truckLanceCode)
} }


private fun applyCreate( private fun applyCreate(
line: TruckLaneScheduleLine, line: TruckLaneScheduleLine,
createdTruckRowIds: MutableList<Long>, createdTruckRowIds: MutableList<Long>,
): String? { ): String? {
val shopId = line.shopId ?: throw IllegalArgumentException("缺少 shopId")
val departure = line.departureTime ?: throw IllegalArgumentException("缺少 departureTime")
val shopId = line.shopId ?: throw IllegalArgumentException(UiText.t("缺少 shopId", "shopId is required"))
val departure = line.departureTime ?: throw IllegalArgumentException(UiText.t("缺少 departureTime", "A departure time is required"))
val toKey = truckService.toBucketKey(line) val toKey = truckService.toBucketKey(line)
val seq = line.toLoadingSequence ?: 0 val seq = line.toLoadingSequence ?: 0
val saved = val saved =
@@ -370,22 +371,22 @@ open class TruckLaneScheduleApplier(
logisticId = line.logisticId, logisticId = line.logisticId,
), ),
) )
val rowId = saved.id ?: throw IllegalStateException("CREATE 未取得 truck id")
val rowId = saved.id ?: throw IllegalStateException(UiText.t("CREATE 未取得 truck id", "CREATE did not return a truck id"))
line.truckRowId = rowId line.truckRowId = rowId
createdTruckRowIds.add(rowId) createdTruckRowIds.add(rowId)
return null return null
} }


private fun applyMove(line: TruckLaneScheduleLine): String? { private fun applyMove(line: TruckLaneScheduleLine): String? {
val truckRowId = line.truckRowId ?: throw IllegalArgumentException("缺少 truckRowId")
val truckRowId = line.truckRowId ?: throw IllegalArgumentException(UiText.t("缺少 truckRowId", "truckRowId is required"))
var truck = var truck =
truckService.findTruckRowByIdIncludingDeleted(truckRowId) truckService.findTruckRowByIdIncludingDeleted(truckRowId)
?: throw IllegalArgumentException("找不到 truck #$truckRowId")
?: throw IllegalArgumentException(UiText.t("找不到 truck #", "Truck not found: #") + truckRowId)


val notes = mutableListOf<String>() val notes = mutableListOf<String>()
if (truck.deleted == true) { if (truck.deleted == true) {
truck = truckService.restoreTruckRowIfDeleted(truck) truck = truckService.restoreTruckRowIfDeleted(truck)
notes.add("店鋪列已從刪除狀態還原")
notes.add(UiText.t("店鋪列已從刪除狀態還原", "Restored the shop row"))
} }


val current = truckService.truckLaneBucketKeyOf(truck) val current = truckService.truckLaneBucketKeyOf(truck)
@@ -396,7 +397,7 @@ open class TruckLaneScheduleApplier(
current.storeId != fromStore || current.storeId != fromStore ||
(current.remark ?: "") != (fromRemark ?: "") (current.remark ?: "") != (fromRemark ?: "")
) { ) {
notes.add("店鋪列已不在排程建立時的來源車線,仍依 truck.id 移至目標")
notes.add(UiText.t("店鋪列已不在排程建立時的來源車線,仍依 truck.id 移至目標", "The shop row was no longer on the source lane. It was still moved by truck id."))
logger.info( logger.info(
"Schedule line {} truck {} moved from {} to target (was scheduled from {} {})", "Schedule line {} truck {} moved from {} to target (was scheduled from {} {})",
line.id, line.id,
@@ -408,7 +409,7 @@ open class TruckLaneScheduleApplier(
} }


val toKey = truckService.toBucketKey(line) val toKey = truckService.toBucketKey(line)
val seq = line.toLoadingSequence ?: throw IllegalArgumentException("缺少 toLoadingSequence")
val seq = line.toLoadingSequence ?: throw IllegalArgumentException(UiText.t("缺少 toLoadingSequence", "A loading sequence is required"))
ensureTargetLaneIfEmpty(line, fallbackDeparture = truck.departureTime)?.let { notes.add(it) } ensureTargetLaneIfEmpty(line, fallbackDeparture = truck.departureTime)?.let { notes.add(it) }
truckService.applyScheduledTruckMove( truckService.applyScheduledTruckMove(
truckRowId, truckRowId,
@@ -421,7 +422,7 @@ open class TruckLaneScheduleApplier(
} }


private fun applyDelete(line: TruckLaneScheduleLine): String? { private fun applyDelete(line: TruckLaneScheduleLine): String? {
val truckRowId = line.truckRowId ?: throw IllegalArgumentException("缺少 truckRowId")
val truckRowId = line.truckRowId ?: throw IllegalArgumentException(UiText.t("缺少 truckRowId", "truckRowId is required"))
truckService.deleteById(truckRowId) truckService.deleteById(truckRowId)
return null return null
} }


+ 9
- 7
src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleExcelSupport.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.pickOrder.service package com.ffii.fpsms.modules.pickOrder.service


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.common.demo.DemoFloors import com.ffii.fpsms.modules.common.demo.DemoFloors
import com.ffii.fpsms.modules.pickOrder.entity.Truck import com.ffii.fpsms.modules.pickOrder.entity.Truck
import com.ffii.fpsms.modules.pickOrder.entity.TruckRepository import com.ffii.fpsms.modules.pickOrder.entity.TruckRepository
@@ -37,16 +39,16 @@ class TruckLaneScheduleExcelSupport(
): Pair<List<TruckLaneScheduleExcelPreviewRow>, List<TruckLaneScheduleExcelRowError>> { ): Pair<List<TruckLaneScheduleExcelPreviewRow>, List<TruckLaneScheduleExcelRowError>> {
if (workbook == null || workbook.numberOfSheets == 0) { if (workbook == null || workbook.numberOfSheets == 0) {
return emptyList<TruckLaneScheduleExcelPreviewRow>() to return emptyList<TruckLaneScheduleExcelPreviewRow>() to
listOf(TruckLaneScheduleExcelRowError(0, "Excel 無工作表"))
listOf(TruckLaneScheduleExcelRowError(0, UiText.t("Excel 無工作表", "The workbook has no sheets")))
} }
val sheet = workbook.getSheetAt(0) val sheet = workbook.getSheetAt(0)
if (sheet.physicalNumberOfRows < 2) { if (sheet.physicalNumberOfRows < 2) {
return emptyList<TruckLaneScheduleExcelPreviewRow>() to return emptyList<TruckLaneScheduleExcelPreviewRow>() to
listOf(TruckLaneScheduleExcelRowError(0, "至少需要標題列與一筆資料"))
listOf(TruckLaneScheduleExcelRowError(0, UiText.t("至少需要標題列與一筆資料", "A header row and one data row are required")))
} }


val headerRow = sheet.getRow(sheet.firstRowNum) ?: return emptyList<TruckLaneScheduleExcelPreviewRow>() to val headerRow = sheet.getRow(sheet.firstRowNum) ?: return emptyList<TruckLaneScheduleExcelPreviewRow>() to
listOf(TruckLaneScheduleExcelRowError(0, "缺少標題列"))
listOf(TruckLaneScheduleExcelRowError(0, UiText.t("缺少標題列", "The header row is missing")))


val colIndex = mutableMapOf<String, Int>() val colIndex = mutableMapOf<String, Int>()
for (c in 0 until headerRow.lastCellNum) { for (c in 0 until headerRow.lastCellNum) {
@@ -64,7 +66,7 @@ class TruckLaneScheduleExcelSupport(
return emptyList<TruckLaneScheduleExcelPreviewRow>() to listOf( return emptyList<TruckLaneScheduleExcelPreviewRow>() to listOf(
TruckLaneScheduleExcelRowError( TruckLaneScheduleExcelRowError(
0, 0,
"缺少必要欄位:ShopID/ShopCode 與 TargetLane",
UiText.t("缺少必要欄位:ShopID/ShopCode 與 TargetLane", "Required columns are missing: ShopID/ShopCode and TargetLane"),
), ),
) )
} }
@@ -93,17 +95,17 @@ class TruckLaneScheduleExcelSupport(
) )


if (shopRaw.isBlank()) { if (shopRaw.isBlank()) {
errors.add(TruckLaneScheduleExcelRowError(rowIndex, "ShopID/ShopCode 不可為空"))
errors.add(TruckLaneScheduleExcelRowError(rowIndex, UiText.t("ShopID/ShopCode 不可為空", "ShopID/ShopCode cannot be empty")))
continue continue
} }
if (laneRaw.isBlank()) { if (laneRaw.isBlank()) {
errors.add(TruckLaneScheduleExcelRowError(rowIndex, "TargetLane 不可為空"))
errors.add(TruckLaneScheduleExcelRowError(rowIndex, UiText.t("TargetLane 不可為空", "TargetLane cannot be empty")))
continue continue
} }


val truck = resolveTruckByShopCode(shopRaw.trim()) val truck = resolveTruckByShopCode(shopRaw.trim())
if (truck == null) { if (truck == null) {
errors.add(TruckLaneScheduleExcelRowError(rowIndex, "找不到店鋪:$shopRaw"))
errors.add(TruckLaneScheduleExcelRowError(rowIndex, UiText.t("找不到店鋪:", "Shop not found: ") + shopRaw))
continue continue
} }




+ 38
- 36
src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckLaneScheduleService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.pickOrder.service package com.ffii.fpsms.modules.pickOrder.service


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.pickOrder.entity.* import com.ffii.fpsms.modules.pickOrder.entity.*
import com.ffii.fpsms.modules.pickOrder.web.models.* import com.ffii.fpsms.modules.pickOrder.web.models.*
import org.springframework.transaction.annotation.Transactional import org.springframework.transaction.annotation.Transactional
@@ -25,7 +27,7 @@ open class TruckLaneScheduleService(
validateExecuteAt(request.executeAt) validateExecuteAt(request.executeAt)
val requestLines = resolveRequestLines(request) val requestLines = resolveRequestLines(request)
if (requestLines.isEmpty()) { if (requestLines.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "lines 不可為空")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("lines 不可為空", "Lines cannot be empty"))
} }
val blocking = schedulePlanValidator.validatePlanLines(requestLines) val blocking = schedulePlanValidator.validatePlanLines(requestLines)
if (blocking.isNotEmpty()) { if (blocking.isNotEmpty()) {
@@ -72,7 +74,7 @@ open class TruckLaneScheduleService(
note: String?, note: String?,
): List<TruckLaneScheduleResponse> { ): List<TruckLaneScheduleResponse> {
if (rows.isEmpty()) { if (rows.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無有效資料列")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無有效資料列", "No valid data rows"))
} }
val grouped = rows.groupBy { it.executeAt ?: defaultExecuteAt } val grouped = rows.groupBy { it.executeAt ?: defaultExecuteAt }
return grouped.map { (executeAt, group) -> return grouped.map { (executeAt, group) ->
@@ -135,7 +137,7 @@ open class TruckLaneScheduleService(


open fun getById(id: Long): TruckLaneScheduleResponse { open fun getById(id: Long): TruckLaneScheduleResponse {
val s = scheduleRepository.findByIdAndDeletedFalse(id) val s = scheduleRepository.findByIdAndDeletedFalse(id)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
return toResponse(s, includeLines = true) return toResponse(s, includeLines = true)
} }


@@ -158,9 +160,9 @@ open class TruckLaneScheduleService(
@Transactional @Transactional
open fun cancel(id: Long): TruckLaneScheduleResponse { open fun cancel(id: Long): TruckLaneScheduleResponse {
val s = scheduleRepository.findByIdAndDeletedFalse(id) val s = scheduleRepository.findByIdAndDeletedFalse(id)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
if (s.status != TruckLaneScheduleStatus.PENDING) { if (s.status != TruckLaneScheduleStatus.PENDING) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "僅 PENDING 可取消")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("僅 PENDING 可取消", "Only a pending schedule can be cancelled"))
} }
s.status = TruckLaneScheduleStatus.CANCELLED s.status = TruckLaneScheduleStatus.CANCELLED
val lineList = scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L) val lineList = scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L)
@@ -172,16 +174,16 @@ open class TruckLaneScheduleService(
open fun applyNow(id: Long): TruckLaneScheduleResponse { open fun applyNow(id: Long): TruckLaneScheduleResponse {
return when (scheduleApplier.applyOne(id)) { return when (scheduleApplier.applyOne(id)) {
ScheduleApplyOutcome.NOT_FOUND -> ScheduleApplyOutcome.NOT_FOUND ->
throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
ScheduleApplyOutcome.SKIPPED -> { ScheduleApplyOutcome.SKIPPED -> {
val current = scheduleRepository.findByIdAndDeletedFalse(id) val current = scheduleRepository.findByIdAndDeletedFalse(id)
val msg = val msg =
when (current?.status) { when (current?.status) {
TruckLaneScheduleStatus.APPLYING -> TruckLaneScheduleStatus.APPLYING ->
"排程正在執行中,請稍後再試"
UiText.t("排程正在執行中,請稍後再試", "The schedule is running. Try again shortly.")
TruckLaneScheduleStatus.PENDING -> TruckLaneScheduleStatus.PENDING ->
"無法認領排程(可能已被其他程序處理)"
else -> "僅 PENDING 可立即執行"
UiText.t("無法認領排程(可能已被其他程序處理)", "Could not claim the schedule. Another process may have taken it.")
else -> UiText.t("僅 PENDING 可立即執行", "Only a pending schedule can be run now")
} }
throw ResponseStatusException(HttpStatus.CONFLICT, msg) throw ResponseStatusException(HttpStatus.CONFLICT, msg)
} }
@@ -197,15 +199,15 @@ open class TruckLaneScheduleService(
executeAt: LocalDateTime?, executeAt: LocalDateTime?,
): TruckLaneScheduleResponse { ): TruckLaneScheduleResponse {
val s = scheduleRepository.findByIdAndDeletedFalse(id) val s = scheduleRepository.findByIdAndDeletedFalse(id)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
if (s.status == TruckLaneScheduleStatus.PARTIAL) { if (s.status == TruckLaneScheduleStatus.PARTIAL) {
throw ResponseStatusException( throw ResponseStatusException(
HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST,
"PARTIAL 排程不可重試,請先還原看板後重新建立排程",
UiText.t("PARTIAL 排程不可重試,請先還原看板後重新建立排程", "A partial schedule cannot be retried. Restore the board, then create a new schedule."),
) )
} }
if (s.status != TruckLaneScheduleStatus.FAILED) { if (s.status != TruckLaneScheduleStatus.FAILED) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "僅 FAILED 可重試失敗列")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("僅 FAILED 可重試失敗列", "Only a failed schedule can retry failed rows"))
} }
val lines = val lines =
scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L) scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L)
@@ -215,14 +217,14 @@ open class TruckLaneScheduleService(
it.lineStatus == TruckLaneScheduleLineStatus.PENDING it.lineStatus == TruckLaneScheduleLineStatus.PENDING
} }
if (retryLines.isEmpty()) { if (retryLines.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無可重試的失敗列")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無可重試的失敗列", "There are no failed rows to retry"))
} }
val whenAt = executeAt ?: LocalDateTime.now().plusMinutes(1) val whenAt = executeAt ?: LocalDateTime.now().plusMinutes(1)
validateExecuteAt(whenAt) validateExecuteAt(whenAt)
val requestLines = val requestLines =
retryLines.mapNotNull { line -> lineToRequest(line) } retryLines.mapNotNull { line -> lineToRequest(line) }
if (requestLines.isEmpty()) { if (requestLines.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無可重試的失敗列")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無可重試的失敗列", "There are no failed rows to retry"))
} }
val created = createManual( val created = createManual(
CreateTruckLaneScheduleRequest( CreateTruckLaneScheduleRequest(
@@ -234,7 +236,7 @@ open class TruckLaneScheduleService(
// 重試排程已接手追蹤,原 FAILED 單標為 IGNORED 以免失敗徽章長亮。 // 重試排程已接手追蹤,原 FAILED 單標為 IGNORED 以免失敗徽章長亮。
s.status = TruckLaneScheduleStatus.IGNORED s.status = TruckLaneScheduleStatus.IGNORED
s.errorMessage = s.errorMessage =
((s.errorMessage?.let { "$it;" } ?: "") + "已由重試排程 #${created.id} 取代").take(2000)
((s.errorMessage?.let { "$it;" } ?: "") + UiText.t("已由重試排程 #", "Replaced by retry schedule #") + (created.id) + UiText.t(" 取代", "")).take(2000)
scheduleRepository.save(s) scheduleRepository.save(s)
return created return created
} }
@@ -245,22 +247,22 @@ open class TruckLaneScheduleService(
executeAt: LocalDateTime?, executeAt: LocalDateTime?,
): TruckLaneScheduleResponse { ): TruckLaneScheduleResponse {
val s = scheduleRepository.findByIdAndDeletedFalse(id) val s = scheduleRepository.findByIdAndDeletedFalse(id)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
if (s.status != TruckLaneScheduleStatus.CANCELLED) { if (s.status != TruckLaneScheduleStatus.CANCELLED) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "僅 CANCELLED 可重新排程")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("僅 CANCELLED 可重新排程", "Only a cancelled schedule can be rescheduled"))
} }
val lines = val lines =
scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L) scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L)
val reactivatable = val reactivatable =
lines.filter { it.lineStatus == TruckLaneScheduleLineStatus.SKIPPED } lines.filter { it.lineStatus == TruckLaneScheduleLineStatus.SKIPPED }
if (reactivatable.isEmpty()) { if (reactivatable.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無可重新排程的明細")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無可重新排程的明細", "There are no rows to reschedule"))
} }
val whenAt = executeAt ?: LocalDateTime.now().plusMinutes(1) val whenAt = executeAt ?: LocalDateTime.now().plusMinutes(1)
validateExecuteAt(whenAt) validateExecuteAt(whenAt)
val requestLines = reactivatable.mapNotNull { line -> lineToRequest(line) } val requestLines = reactivatable.mapNotNull { line -> lineToRequest(line) }
if (requestLines.isEmpty()) { if (requestLines.isEmpty()) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無可重新排程的明細")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無可重新排程的明細", "There are no rows to reschedule"))
} }
val blocking = schedulePlanValidator.validatePlanLines(requestLines) val blocking = schedulePlanValidator.validatePlanLines(requestLines)
if (blocking.isNotEmpty()) { if (blocking.isNotEmpty()) {
@@ -285,12 +287,12 @@ open class TruckLaneScheduleService(
@Transactional @Transactional
open fun ignore(id: Long): TruckLaneScheduleResponse { open fun ignore(id: Long): TruckLaneScheduleResponse {
val s = scheduleRepository.findByIdAndDeletedFalse(id) val s = scheduleRepository.findByIdAndDeletedFalse(id)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在")
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found"))
if (s.status == TruckLaneScheduleStatus.IGNORED) { if (s.status == TruckLaneScheduleStatus.IGNORED) {
return toResponse(s, includeLines = true) return toResponse(s, includeLines = true)
} }
if (s.status == TruckLaneScheduleStatus.CANCELLED) { if (s.status == TruckLaneScheduleStatus.CANCELLED) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "已取消的排程無法忽略")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("已取消的排程無法忽略", "A cancelled schedule cannot be ignored"))
} }
val lines = val lines =
scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L) scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L)
@@ -301,7 +303,7 @@ open class TruckLaneScheduleService(
s.status == TruckLaneScheduleStatus.PARTIAL || s.status == TruckLaneScheduleStatus.PARTIAL ||
failedLineCount > 0 failedLineCount > 0
if (!canIgnore) { if (!canIgnore) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "僅含失敗明細的排程可忽略")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("僅含失敗明細的排程可忽略", "Only a schedule with failed rows can be ignored"))
} }
s.status = TruckLaneScheduleStatus.IGNORED s.status = TruckLaneScheduleStatus.IGNORED
return toResponse(scheduleRepository.save(s), includeLines = true) return toResponse(scheduleRepository.save(s), includeLines = true)
@@ -334,7 +336,7 @@ open class TruckLaneScheduleService(
for (schedule in stale) { for (schedule in stale) {
schedule.status = TruckLaneScheduleStatus.FAILED schedule.status = TruckLaneScheduleStatus.FAILED
schedule.errorMessage = schedule.errorMessage =
"排程執行逾時(>${staleMinutes} 分鐘仍為 APPLYING),請依 runbook 手動還原".take(2000)
UiText.t("排程執行逾時(>", "Schedule timed out (still applying after ") + (staleMinutes) + UiText.t(" 分鐘仍為 APPLYING),請依 runbook 手動還原", " minutes). Restore it manually using the runbook.").take(2000)
scheduleRepository.save(schedule) scheduleRepository.save(schedule)
} }
} }
@@ -381,11 +383,11 @@ open class TruckLaneScheduleService(
if (bucket.isNotEmpty()) { if (bucket.isNotEmpty()) {
throw ResponseStatusException( throw ResponseStatusException(
HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST,
"車線 ${toKey.truckLanceCode} 已存在,無需 ENSURE_LANE",
UiText.t("車線 ", "Truck lane ") + (toKey.truckLanceCode) + UiText.t(" 已存在,無需 ENSURE_LANE", " already exists. ENSURE_LANE is not needed."),
) )
} }
val departure = req.departureTime val departure = req.departureTime
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "ENSURE_LANE 缺少 departureTime")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("ENSURE_LANE 缺少 departureTime", "ENSURE_LANE is missing a departure time"))
TruckLaneScheduleLine().apply { TruckLaneScheduleLine().apply {
lineAction = TruckLaneScheduleLineAction.ENSURE_LANE lineAction = TruckLaneScheduleLineAction.ENSURE_LANE
toTruckLanceCode = toKey.truckLanceCode toTruckLanceCode = toKey.truckLanceCode
@@ -400,14 +402,14 @@ open class TruckLaneScheduleService(


TruckLaneScheduleLineAction.CREATE -> { TruckLaneScheduleLineAction.CREATE -> {
val shopId = req.shopId val shopId = req.shopId
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "CREATE 缺少 shopId")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("CREATE 缺少 shopId", "CREATE is missing shopId"))
val departure = req.departureTime val departure = req.departureTime
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "CREATE 缺少 departureTime")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("CREATE 缺少 departureTime", "CREATE is missing a departure time"))
val bucket = truckService.trucksInLaneBucket(toKey) val bucket = truckService.trucksInLaneBucket(toKey)
if (bucket.isEmpty() && !allowEmptyTarget) { if (bucket.isEmpty() && !allowEmptyTarget) {
throw ResponseStatusException( throw ResponseStatusException(
HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST,
"目標車線 ${toKey.truckLanceCode} 不存在,需先 ENSURE_LANE",
UiText.t("目標車線 ", "Target truck lane ") + (toKey.truckLanceCode) + UiText.t(" 不存在,需先 ENSURE_LANE", " does not exist. Run ENSURE_LANE first."),
) )
} }
val seq = req.toLoadingSequence ?: 0 val seq = req.toLoadingSequence ?: 0
@@ -429,12 +431,12 @@ open class TruckLaneScheduleService(


TruckLaneScheduleLineAction.DELETE -> { TruckLaneScheduleLineAction.DELETE -> {
val truckRowId = req.truckRowId val truckRowId = req.truckRowId
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "DELETE 缺少 truckRowId")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("DELETE 缺少 truckRowId", "DELETE is missing truckRowId"))
assertNoOpenPending(truckRowId) assertNoOpenPending(truckRowId)
val truck = truckService.findTruckById(truckRowId) val truck = truckService.findTruckById(truckRowId)
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "找不到 truck #$truckRowId")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("找不到 truck #", "Truck not found: #") + truckRowId)
if (truckService.isPlaceholderTruckRow(truck)) { if (truckService.isPlaceholderTruckRow(truck)) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無法刪除空白占位列")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無法刪除空白占位列", "A blank placeholder row cannot be deleted"))
} }
val fromKey = truckService.truckLaneBucketKeyOf(truck) val fromKey = truckService.truckLaneBucketKeyOf(truck)
TruckLaneScheduleLine().apply { TruckLaneScheduleLine().apply {
@@ -454,17 +456,17 @@ open class TruckLaneScheduleService(


TruckLaneScheduleLineAction.MOVE -> { TruckLaneScheduleLineAction.MOVE -> {
val truckRowId = req.truckRowId val truckRowId = req.truckRowId
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "MOVE 缺少 truckRowId")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("MOVE 缺少 truckRowId", "MOVE is missing truckRowId"))
assertNoOpenPending(truckRowId) assertNoOpenPending(truckRowId)
val truck = truckService.findTruckById(truckRowId) val truck = truckService.findTruckById(truckRowId)
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "找不到 truck #$truckRowId")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("找不到 truck #", "Truck not found: #") + truckRowId)
val fromKey = truckService.truckLaneBucketKeyOf(truck) val fromKey = truckService.truckLaneBucketKeyOf(truck)
val err = truckService.validateMoveToLane(truckRowId, toKey, allowEmptyTarget) val err = truckService.validateMoveToLane(truckRowId, toKey, allowEmptyTarget)
if (err != null) { if (err != null) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "truck #$truckRowId: $err") throw ResponseStatusException(HttpStatus.BAD_REQUEST, "truck #$truckRowId: $err")
} }
val seq = req.toLoadingSequence val seq = req.toLoadingSequence
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, "MOVE 缺少 toLoadingSequence")
?: throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("MOVE 缺少 toLoadingSequence", "MOVE is missing a loading sequence"))
TruckLaneScheduleLine().apply { TruckLaneScheduleLine().apply {
lineAction = TruckLaneScheduleLineAction.MOVE lineAction = TruckLaneScheduleLineAction.MOVE
this.truckRowId = truckRowId this.truckRowId = truckRowId
@@ -498,7 +500,7 @@ open class TruckLaneScheduleService(
) { ) {
throw ResponseStatusException( throw ResponseStatusException(
HttpStatus.BAD_REQUEST, HttpStatus.BAD_REQUEST,
"truck #$truckRowId 已有待執行排程",
"truck #" + truckRowId + UiText.t(" 已有待執行排程", " already has a pending schedule"),
) )
} }
} }
@@ -536,7 +538,7 @@ open class TruckLaneScheduleService(
private fun validateExecuteAt(executeAt: LocalDateTime) { private fun validateExecuteAt(executeAt: LocalDateTime) {
val min = LocalDateTime.now().minusMinutes(2) val min = LocalDateTime.now().minusMinutes(2)
if (executeAt.isBefore(min)) { if (executeAt.isBefore(min)) {
throw ResponseStatusException(HttpStatus.BAD_REQUEST, "執行時間不可早於目前時間")
throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("執行時間不可早於目前時間", "The run time cannot be earlier than now"))
} }
} }




+ 37
- 35
src/main/java/com/ffii/fpsms/modules/pickOrder/service/TruckService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.pickOrder.service package com.ffii.fpsms.modules.pickOrder.service


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.common.demo.DemoFloors import com.ffii.fpsms.modules.common.demo.DemoFloors
import com.ffii.core.support.AbstractBaseEntityService import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
@@ -546,12 +548,12 @@ open class TruckService(
allowEmptyTarget: Boolean, allowEmptyTarget: Boolean,
): String? { ): String? {
val truck = truckRepository.findById(truckRowId).orElse(null) val truck = truckRepository.findById(truckRowId).orElse(null)
?: return "找不到 truck 列 id=$truckRowId"
if (truck.deleted == true) return "truck 列已刪除"
if (isLanePlaceholderTruck(truck)) return "無法排程移動空白占位列"
?: return UiText.t("找不到 truck 列 id=", "Truck row not found, id=") + truckRowId
if (truck.deleted == true) return UiText.t("truck 列已刪除", "The truck row is deleted")
if (isLanePlaceholderTruck(truck)) return UiText.t("無法排程移動空白占位列", "A blank placeholder row cannot be scheduled for a move")


val toCode = to.truckLanceCode.trim() val toCode = to.truckLanceCode.trim()
if (toCode.isEmpty()) return "目標車線編號不可為空"
if (toCode.isEmpty()) return UiText.t("目標車線編號不可為空", "The target truck lane code cannot be empty")


val fromKey = truckLaneBucketKeyOf(truck) val fromKey = truckLaneBucketKeyOf(truck)
val sameLane = val sameLane =
@@ -563,11 +565,11 @@ open class TruckService(
val targetBucket = trucksInLaneBucket(to) val targetBucket = trucksInLaneBucket(to)
if (targetBucket.isEmpty()) { if (targetBucket.isEmpty()) {
if (allowEmptyTarget) return null if (allowEmptyTarget) return null
return "目標車線不存在或尚無任何列:$toCode"
return UiText.t("目標車線不存在或尚無任何列:", "The target truck lane does not exist or has no rows: ") + toCode
} }


if (laneHasShopConflict(truck, targetBucket, excludeTruckRowId = truckRowId)) { if (laneHasShopConflict(truck, targetBucket, excludeTruckRowId = truckRowId)) {
return "目標車線已有相同店鋪"
return UiText.t("目標車線已有相同店鋪", "The target truck lane already has this shop")
} }
return null return null
} }
@@ -658,7 +660,7 @@ open class TruckService(
): List<Truck> { ): List<Truck> {
assertNotScheduleLocked(truckRowId) assertNotScheduleLocked(truckRowId)
var truck = findTruckRowByIdIncludingDeleted(truckRowId) var truck = findTruckRowByIdIncludingDeleted(truckRowId)
?: throw IllegalArgumentException("找不到 truck #$truckRowId")
?: throw IllegalArgumentException(UiText.t("找不到 truck #", "Truck not found: #") + truckRowId)
truck = restoreTruckRowIfDeleted(truck) truck = restoreTruckRowIfDeleted(truck)


val err = validateMoveToLane(truckRowId, to) val err = validateMoveToLane(truckRowId, to)
@@ -994,12 +996,12 @@ open class TruckService(
rr.createCell(RouteLaneExcelSupport.COL_META_C).setCellValue(remark ?: "") rr.createCell(RouteLaneExcelSupport.COL_META_C).setCellValue(remark ?: "")


rr = sheet.createRow(RouteLaneExcelSupport.ROW_STORE) rr = sheet.createRow(RouteLaneExcelSupport.ROW_STORE)
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue("樓層")
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue(UiText.t("樓層", "Floor"))
rr.createCell(RouteLaneExcelSupport.COL_META_B) rr.createCell(RouteLaneExcelSupport.COL_META_B)
.setCellValue(trucks.first().storeId ?: "") .setCellValue(trucks.first().storeId ?: "")


rr = sheet.createRow(RouteLaneExcelSupport.ROW_DEPARTURE_DEFAULT) rr = sheet.createRow(RouteLaneExcelSupport.ROW_DEPARTURE_DEFAULT)
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue("出車時間")
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue(UiText.t("出車時間", "Departure time"))
rr.createCell(RouteLaneExcelSupport.COL_META_B).setCellValue( rr.createCell(RouteLaneExcelSupport.COL_META_B).setCellValue(
formatDepartureForExcel(trucks.first().departureTime), formatDepartureForExcel(trucks.first().departureTime),
) )
@@ -1046,7 +1048,7 @@ open class TruckService(


fun buildRouteReportFilename(): String { fun buildRouteReportFilename(): String {
val d = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) val d = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
return "車線Report_${d}.xlsx"
return UiText.t("車線Report_", "TruckLaneReport_") + (d) + ".xlsx"
} }


private fun normalizeRemarkForLaneGroup(raw: String?): String { private fun normalizeRemarkForLaneGroup(raw: String?): String {
@@ -1103,7 +1105,7 @@ open class TruckService(
val byCompanyId = trucks.groupBy { t -> val byCompanyId = trucks.groupBy { t ->
val id = t.logistic?.id val id = t.logistic?.id
val nameRaw = t.logistic?.logisticName?.trim().orEmpty() val nameRaw = t.logistic?.logisticName?.trim().orEmpty()
val name = if (nameRaw.isNotEmpty()) nameRaw else "未命名物流"
val name = if (nameRaw.isNotEmpty()) nameRaw else UiText.t("未命名物流", "Unnamed logistics")
CompanyKey(id, name) CompanyKey(id, name)
} }


@@ -1124,8 +1126,8 @@ open class TruckService(
RouteReportExcelSupport.writeTitle( RouteReportExcelSupport.writeTitle(
sheet, sheet,
st, st,
"新車綫($today)更改車線",
"製表: $preparedBy",
UiText.t("新車綫(", "New truck lanes (") + today + UiText.t(")更改車線", ") lane changes"),
UiText.t("製表: ", "Prepared by: ") + preparedBy,
companies.size, companies.size,
) )


@@ -1300,13 +1302,13 @@ open class TruckService(
val summaryRows = buildSummaryRows(fromLines, toLines, diffLines, logisticNameById) val summaryRows = buildSummaryRows(fromLines, toLines, diffLines, logisticNameById)


val createdDate = (toV.created?.toString() ?: "").take(10) val createdDate = (toV.created?.toString() ?: "").take(10)
val title = "車線報告(${createdDate.ifBlank { "—" }})更改車線"
val title = UiText.t("車線報告(", "Truck lane report (") + (createdDate.ifBlank { "—" }) + UiText.t(")更改車線", ") lane changes")
val editor = (toV.modifiedBy ?: input.preparedBy).trim().ifBlank { input.preparedBy } val editor = (toV.modifiedBy ?: input.preparedBy).trim().ifBlank { input.preparedBy }
val created = toV.created?.toString() ?: "—" val created = toV.created?.toString() ?: "—"


val stats = summarizeSummaryRows(summaryRows) val stats = summarizeSummaryRows(summaryRows)
val statsText = val statsText =
"新增 ${stats.added} · 移動 ${stats.moved} · 刪除 ${stats.deleted} · 欄位變更 ${stats.fieldChanged}"
UiText.t("新增 ", "Added ") + (stats.added) + UiText.t(" · 移動 ", " · Moved ") + (stats.moved) + UiText.t(" · 刪除 ", " · Deleted ") + (stats.deleted) + UiText.t(" · 欄位變更 ", " · Field changes ") + (stats.fieldChanged)


TruckLaneVersionReportExcelSupport.writeSummarySheet( TruckLaneVersionReportExcelSupport.writeSummarySheet(
wb, wb,
@@ -1420,15 +1422,15 @@ open class TruckService(
} }


private val FIELD_LABEL = mapOf( private val FIELD_LABEL = mapOf(
"departureTime" to "發車時段",
"loadingSequence" to "裝載順序",
"branchName" to "分店名稱",
"districtReference" to "區域",
"shopCode" to "店鋪代碼",
"storeId" to "樓層/店別",
"remark" to "備註",
"truckLanceCode" to "車線代碼",
"logisticId" to "物流公司",
"departureTime" to UiText.t("發車時段", "Departure window"),
"loadingSequence" to UiText.t("裝載順序", "Loading sequence"),
"branchName" to UiText.t("分店名稱", "Shop name"),
"districtReference" to UiText.t("區域", "Area"),
"shopCode" to UiText.t("店鋪代碼", "Shop code"),
"storeId" to UiText.t("樓層/店別", "Floor / shop type"),
"remark" to UiText.t("備註", "Notes"),
"truckLanceCode" to UiText.t("車線代碼", "Truck lane code"),
"logisticId" to UiText.t("物流公司", "Logistics company"),
) )


private fun buildSummaryRows( private fun buildSummaryRows(
@@ -1465,11 +1467,11 @@ open class TruckService(
.toSet() .toSet()
val textBits = ArrayList<String>() val textBits = ArrayList<String>()
if (type == TruckLaneVersionReportExcelSupport.RowType.ADDED) { if (type == TruckLaneVersionReportExcelSupport.RowType.ADDED) {
textBits.add("新增到 $toLane")
textBits.add(UiText.t("新增到 ", "Added to ") + toLane)
} else if (type == TruckLaneVersionReportExcelSupport.RowType.DELETED) { } else if (type == TruckLaneVersionReportExcelSupport.RowType.DELETED) {
textBits.add("自 $fromLane 移除")
textBits.add(UiText.t("自 ", "Removed from ") + fromLane + UiText.t(" 移除", ""))
} else if (type == TruckLaneVersionReportExcelSupport.RowType.MOVED) { } else if (type == TruckLaneVersionReportExcelSupport.RowType.MOVED) {
textBits.add("由 $fromLane → $toLane")
textBits.add(UiText.t("由 ", "Moved ") + fromLane + " → " + toLane)
} }
for (c in d.changes) { for (c in d.changes) {
if (c.field == "truckLanceCode" || c.field == "remark") continue if (c.field == "truckLanceCode" || c.field == "remark") continue
@@ -1500,7 +1502,7 @@ open class TruckService(
shopCode = (b?.shopCode ?: a?.shopCode ?: "").trim(), shopCode = (b?.shopCode ?: a?.shopCode ?: "").trim(),
fromLane = fromLane, fromLane = fromLane,
toLane = toLane, toLane = toLane,
changeText = textBits.joinToString(";").ifEmpty { "欄位變更" },
changeText = textBits.joinToString(";").ifEmpty { UiText.t("欄位變更", "Field changes") },
changedFields = changedFields, changedFields = changedFields,
), ),
) )
@@ -1557,11 +1559,11 @@ open class TruckService(
rr.createCell(RouteLaneExcelSupport.COL_META_C).setCellValue(k.remark) rr.createCell(RouteLaneExcelSupport.COL_META_C).setCellValue(k.remark)


rr = sheet.createRow(RouteLaneExcelSupport.ROW_STORE) rr = sheet.createRow(RouteLaneExcelSupport.ROW_STORE)
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue("樓層")
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue(UiText.t("樓層", "Floor"))
rr.createCell(RouteLaneExcelSupport.COL_META_B).setCellValue(lines.first().storeId ?: "") rr.createCell(RouteLaneExcelSupport.COL_META_B).setCellValue(lines.first().storeId ?: "")


rr = sheet.createRow(RouteLaneExcelSupport.ROW_DEPARTURE_DEFAULT) rr = sheet.createRow(RouteLaneExcelSupport.ROW_DEPARTURE_DEFAULT)
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue("出車時間")
rr.createCell(RouteLaneExcelSupport.COL_META_A).setCellValue(UiText.t("出車時間", "Departure time"))
val deptDefault = parseLocalTimeOrNull(lines.firstNotNullOfOrNull { it.departureTime }) val deptDefault = parseLocalTimeOrNull(lines.firstNotNullOfOrNull { it.departureTime })
rr.createCell(RouteLaneExcelSupport.COL_META_B).setCellValue(formatDepartureForExcel(deptDefault)) rr.createCell(RouteLaneExcelSupport.COL_META_B).setCellValue(formatDepartureForExcel(deptDefault))


@@ -1672,7 +1674,7 @@ open class TruckService(
val byCompany = linesWithLane.groupBy { l -> val byCompany = linesWithLane.groupBy { l ->
val id = l.logisticId val id = l.logisticId
val logi = if (id != null) logisticsById[id] else null val logi = if (id != null) logisticsById[id] else null
val name = logi?.logisticName?.trim().orEmpty().ifEmpty { "未命名物流" }
val name = logi?.logisticName?.trim().orEmpty().ifEmpty { UiText.t("未命名物流", "Unnamed logistics") }
CompanyKey(id, name) CompanyKey(id, name)
}.entries.sortedBy { it.key.name } }.entries.sortedBy { it.key.name }


@@ -1681,8 +1683,8 @@ open class TruckService(
TruckLaneVersionRouteReportExcelSupport.writeTitle( TruckLaneVersionRouteReportExcelSupport.writeTitle(
sheet, sheet,
st, st,
"車線報告($createdDate)更改車線",
"製表: $editor",
UiText.t("車線報告(", "Truck lane report (") + createdDate + UiText.t(")更改車線", ") lane changes"),
UiText.t("製表: ", "Prepared by: ") + editor,
byCompany.size.coerceAtLeast(1), byCompany.size.coerceAtLeast(1),
) )


@@ -1728,7 +1730,7 @@ open class TruckService(
val shown = fields val shown = fields
.filterNot { it == "truckLanceCode" || it == "remark" || it == "logisticId" } .filterNot { it == "truckLanceCode" || it == "remark" || it == "logisticId" }
.map { FIELD_LABEL[it] ?: it } .map { FIELD_LABEL[it] ?: it }
if (shown.isNotEmpty()) "變更: ${shown.joinToString(",")}" else null
if (shown.isNotEmpty()) UiText.t("變更: ", "Changes: ") + (shown.joinToString(",")) else null
} }
val logisticChange = logisticChangeByRowId[id]?.let { ch -> val logisticChange = logisticChangeByRowId[id]?.let { ch ->
val fromName = ch.from?.trim()?.toLongOrNull() val fromName = ch.from?.trim()?.toLongOrNull()
@@ -1743,7 +1745,7 @@ open class TruckService(
.orEmpty() .orEmpty()
.ifEmpty { ch.to?.trim().orEmpty() } .ifEmpty { ch.to?.trim().orEmpty() }
.ifEmpty { "—" } .ifEmpty { "—" }
if (fromName != toName) "物流公司:$fromName → $toName" else null
if (fromName != toName) UiText.t("物流公司:", "Logistics company: ") + fromName + " → " + toName else null
} }
val linesText = ArrayList<String>(4) val linesText = ArrayList<String>(4)
linesText.add(name) linesText.add(name)


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/pickOrder/web/TruckLaneScheduleController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.pickOrder.web package com.ffii.fpsms.modules.pickOrder.web


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.master.web.models.MessageResponse import com.ffii.fpsms.modules.master.web.models.MessageResponse
import com.ffii.fpsms.modules.pickOrder.entity.TruckLaneScheduleStatus import com.ffii.fpsms.modules.pickOrder.entity.TruckLaneScheduleStatus
import com.ffii.fpsms.modules.pickOrder.service.TruckLaneScheduleService import com.ffii.fpsms.modules.pickOrder.service.TruckLaneScheduleService
@@ -149,7 +151,7 @@ open class TruckLaneScheduleController @Autowired constructor(
name = null, name = null,
code = null, code = null,
type = "truckLaneSchedule", type = "truckLaneSchedule",
message = "無有效列可匯入",
message = UiText.t("無有效列可匯入", "No valid rows to import"),
errorPosition = null, errorPosition = null,
entity = parsed, entity = parsed,
), ),


+ 27
- 25
src/main/java/com/ffii/fpsms/modules/report/service/LotExpiryAlertExcelBuilder.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.service package com.ffii.fpsms.modules.report.service


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.LotExpiryAlertReportService.SearchFilters import com.ffii.fpsms.modules.report.service.LotExpiryAlertReportService.SearchFilters
import org.apache.poi.ss.usermodel.BorderStyle import org.apache.poi.ss.usermodel.BorderStyle
import org.apache.poi.ss.usermodel.CellStyle import org.apache.poi.ss.usermodel.CellStyle
@@ -35,20 +37,20 @@ internal object LotExpiryAlertExcelBuilder {
workbook.setCompressTempFiles(true) workbook.setCompressTempFiles(true)
try { try {
val styles = createStyles(workbook) val styles = createStyles(workbook)
val reportTitle = "到期警示報告"
val reportTitle = UiText.t("到期警示報告", "Expiry alert report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))
val headers = listOf( val headers = listOf(
"到期警示",
"樓層",
"到期日",
"貨品編號",
"貨品名稱",
"批號",
"倉庫",
"區域",
"儲位",
"剩餘數量",
"單位",
UiText.t("到期警示", "Expiry alert"),
UiText.t("樓層", "Floor"),
UiText.t("到期日", "Expiry date"),
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("批號", "Lot no."),
UiText.t("倉庫", "Warehouse"),
UiText.t("區域", "Area"),
UiText.t("儲位", "Slot"),
UiText.t("剩餘數量", "Remaining qty"),
UiText.t("單位", "UOM"),
) )
val totalColumns = headers.size val totalColumns = headers.size
var rowIndex = 0 var rowIndex = 0
@@ -65,7 +67,7 @@ internal object LotExpiryAlertExcelBuilder {
val dateRow = sheet.createRow(rowIndex++) val dateRow = sheet.createRow(rowIndex++)
dateRow.heightInPoints = 32f dateRow.heightInPoints = 32f
dateRow.createCell(0).apply { dateRow.createCell(0).apply {
setCellValue("下載日期:$downloadedAt")
setCellValue(UiText.t("下載日期:", "Downloaded: ") + downloadedAt)
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
val dateEndCol = 3.coerceAtMost(totalColumns - 2) val dateEndCol = 3.coerceAtMost(totalColumns - 2)
@@ -74,14 +76,14 @@ internal object LotExpiryAlertExcelBuilder {
} }
val filterStartCol = dateEndCol + 1 val filterStartCol = dateEndCol + 1
val filterText = listOf( val filterText = listOf(
"貨品編號=${displayFilter(filters.itemCode)}",
"貨品=${displayFilter(filters.itemName)}",
"批號=${displayFilter(filters.lotNo)}",
"未來天數=${filters.resolvedDaysAhead()}",
"到期分類=${displayBucket(filters.bucket, filters.resolvedDaysAhead())}",
UiText.t("貨品編號=", "Item code=") + (displayFilter(filters.itemCode)),
UiText.t("貨品=", "Item=") + (displayFilter(filters.itemName)),
UiText.t("批號=", "Lot no.=") + (displayFilter(filters.lotNo)),
UiText.t("未來天數=", "Days ahead=") + (filters.resolvedDaysAhead()),
UiText.t("到期分類=", "Expiry group=") + (displayBucket(filters.bucket, filters.resolvedDaysAhead())),
).joinToString(" ") ).joinToString(" ")
dateRow.createCell(filterStartCol).apply { dateRow.createCell(filterStartCol).apply {
setCellValue("搜尋條件:$filterText")
setCellValue(UiText.t("搜尋條件:", "Filters: ") + filterText)
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
if (filterStartCol < totalColumns - 1) { if (filterStartCol < totalColumns - 1) {
@@ -103,7 +105,7 @@ internal object LotExpiryAlertExcelBuilder {
val r = sheet.createRow(rowIndex++) val r = sheet.createRow(rowIndex++)
r.heightInPoints = 22f r.heightInPoints = 22f
r.createCell(0).apply { r.createCell(0).apply {
setCellValue("查無資料")
setCellValue(UiText.t("查無資料", "No data"))
cellStyle = styles.center cellStyle = styles.center
} }
for (c in 1 until totalColumns) { for (c in 1 until totalColumns) {
@@ -210,15 +212,15 @@ internal object LotExpiryAlertExcelBuilder {


private fun displayFilter(raw: String?): String { private fun displayFilter(raw: String?): String {
val v = raw?.trim().orEmpty() val v = raw?.trim().orEmpty()
return if (v.isEmpty()) "全部" else v
return if (v.isEmpty()) UiText.t("全部", "All") else v
} }


private fun displayBucket(raw: String?, daysAhead: Int): String { private fun displayBucket(raw: String?, daysAhead: Int): String {
return when (raw?.trim()?.lowercase()) { return when (raw?.trim()?.lowercase()) {
"expired" -> "過期尚未處理"
"today" -> "今日到期"
"upcoming" -> "未來 ${daysAhead} 日到期"
else -> "全部"
"expired" -> UiText.t("過期尚未處理", "Expired, not yet handled")
"today" -> UiText.t("今日到期", "Expires today")
"upcoming" -> UiText.t("未來 ", "Within ") + (daysAhead) + UiText.t(" 日到期", " days")
else -> UiText.t("全部", "All")
} }
} }




+ 7
- 3
src/main/java/com/ffii/fpsms/modules/report/service/LotExpiryAlertReportService.kt Ver ficheiro

@@ -1,6 +1,7 @@
package com.ffii.fpsms.modules.report.service package com.ffii.fpsms.modules.report.service


import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import com.ffii.core.utils.UiText
import org.springframework.stereotype.Service import org.springframework.stereotype.Service


@Service @Service
@@ -71,6 +72,9 @@ open class LotExpiryAlertReportService(
) )
} }
} }
val expired = UiText.t("已過期", "Expired").replace("'", "''")
val today = UiText.t("今日到期", "Expires today").replace("'", "''")
val upcoming = UiText.t("${daysAhead}日內到期", "Expires within $daysAhead days").replace("'", "''")
return jdbcDao.queryForList( return jdbcDao.queryForList(
""" """
SELECT SELECT
@@ -86,10 +90,10 @@ open class LotExpiryAlertReportService(
COALESCE(uc.udfudesc, uc.code, '') AS unitOfMeasure, COALESCE(uc.udfudesc, uc.code, '') AS unitOfMeasure,
CASE CASE
WHEN il.expiryDate IS NULL THEN '' WHEN il.expiryDate IS NULL THEN ''
WHEN il.expiryDate < CURRENT_DATE THEN '已過期'
WHEN il.expiryDate = CURRENT_DATE THEN '今日到期'
WHEN il.expiryDate < CURRENT_DATE THEN '$expired'
WHEN il.expiryDate = CURRENT_DATE THEN '$today'
WHEN il.expiryDate <= DATE_ADD(CURRENT_DATE, INTERVAL :daysAhead DAY) WHEN il.expiryDate <= DATE_ADD(CURRENT_DATE, INTERVAL :daysAhead DAY)
THEN '${daysAhead}日內到期'
THEN '$upcoming'
ELSE '' ELSE ''
END AS expiryAlert END AS expiryAlert
FROM inventory_lot_line ill FROM inventory_lot_line ill


+ 9
- 2
src/main/java/com/ffii/fpsms/modules/report/service/ReportService.kt Ver ficheiro

@@ -1,5 +1,6 @@
package com.ffii.fpsms.modules.report.service package com.ffii.fpsms.modules.report.service


import com.ffii.core.utils.ReportMessages
import com.ffii.fpsms.modules.common.demo.DemoFloors import com.ffii.fpsms.modules.common.demo.DemoFloors
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import net.sf.jasperreports.engine.* import net.sf.jasperreports.engine.*
@@ -1734,7 +1735,7 @@ return result
fun createExcelResponse(templatePath: String, params: Map<String, Any>, dataList: List<Map<String, Any>>): ByteArray { fun createExcelResponse(templatePath: String, params: Map<String, Any>, dataList: List<Map<String, Any>>): ByteArray {
val jasperReport = compiledReport(templatePath) val jasperReport = compiledReport(templatePath)
val dataSource = JRMapCollectionDataSource(dataList) val dataSource = JRMapCollectionDataSource(dataList)
val jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource)
val jasperPrint = JasperFillManager.fillReport(jasperReport, withReportBundle(params), dataSource)
val out = ByteArrayOutputStream() val out = ByteArrayOutputStream()
val exporter = JRXlsxExporter() val exporter = JRXlsxExporter()
exporter.setExporterInput(SimpleExporterInput(jasperPrint)) exporter.setExporterInput(SimpleExporterInput(jasperPrint))
@@ -1749,10 +1750,16 @@ return result
fun createPdfResponse(templatePath: String, params: Map<String, Any>, dataList: List<Map<String, Any>>): ByteArray { fun createPdfResponse(templatePath: String, params: Map<String, Any>, dataList: List<Map<String, Any>>): ByteArray {
val jasperReport = compiledReport(templatePath) val jasperReport = compiledReport(templatePath)
val dataSource = JRMapCollectionDataSource(dataList) val dataSource = JRMapCollectionDataSource(dataList)
val jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource)
val jasperPrint = JasperFillManager.fillReport(jasperReport, withReportBundle(params), dataSource)
return JasperExportManager.exportReportToPdf(jasperPrint) return JasperExportManager.exportReportToPdf(jasperPrint)
} }


private fun withReportBundle(params: Map<String, Any>): Map<String, Any> {
val copy = HashMap(params)
copy[JRParameter.REPORT_RESOURCE_BUNDLE] = ReportMessages.bundle()
return copy
}

fun mergePdfBytes(parts: List<ByteArray>): ByteArray { fun mergePdfBytes(parts: List<ByteArray>): ByteArray {
if (parts.isEmpty()) return ByteArray(0) if (parts.isEmpty()) return ByteArray(0)
if (parts.size == 1) return parts[0] if (parts.size == 1) return parts[0]


+ 17
- 15
src/main/java/com/ffii/fpsms/modules/report/service/StockLedgerPdf.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.service package com.ffii.fpsms.modules.report.service


import com.ffii.core.utils.UiText

import org.apache.pdfbox.pdmodel.PDDocument import org.apache.pdfbox.pdmodel.PDDocument
import org.apache.pdfbox.pdmodel.PDPage import org.apache.pdfbox.pdmodel.PDPage
import org.apache.pdfbox.pdmodel.PDPageContentStream import org.apache.pdfbox.pdmodel.PDPageContentStream
@@ -30,16 +32,16 @@ object StockLedgerPdf {
private data class Col(val x: Float, val w: Float, val title: String, val alignRight: Boolean = false) private data class Col(val x: Float, val w: Float, val title: String, val alignRight: Boolean = false)


private val columns = listOf( private val columns = listOf(
Col(11f, 78f, "出入賬日期"),
Col(91f, 58f, "類型"),
Col(151f, 120f, "批號"),
Col(273f, 72f, "到期日"),
Col(347f, 58f, "纍計期初", alignRight = true),
Col(407f, 48f, "入庫", alignRight = true),
Col(457f, 48f, "出庫", alignRight = true),
Col(507f, 62f, "纍計存量", alignRight = true),
Col(571f, 140f, "參考編號"),
Col(713f, 112f, "存貨位置"),
Col(11f, 78f, UiText.t("出入賬日期", "Ledger date")),
Col(91f, 58f, UiText.t("類型", "Type")),
Col(151f, 120f, UiText.t("批號", "Lot no.")),
Col(273f, 72f, UiText.t("到期日", "Expiry date")),
Col(347f, 58f, UiText.t("纍計期初", "Opening"), alignRight = true),
Col(407f, 48f, UiText.t("入庫", "Stock in"), alignRight = true),
Col(457f, 48f, UiText.t("出庫", "Stock out"), alignRight = true),
Col(507f, 62f, UiText.t("纍計存量", "Cumulative balance"), alignRight = true),
Col(571f, 140f, UiText.t("參考編號", "Reference no.")),
Col(713f, 112f, UiText.t("存貨位置", "Stock location")),
) )


fun write( fun write(
@@ -64,7 +66,7 @@ object StockLedgerPdf {
fun closeGroup() { fun closeGroup() {
if (count > 1) { if (count > 1) {
canvas.ensureRow() canvas.ensureRow()
canvas.text(250f, canvas.y, "貨品總量:", BODY_SIZE, 95f, alignRight = true)
canvas.text(250f, canvas.y, UiText.t("貨品總量:", "Total qty: "), BODY_SIZE, 95f, alignRight = true)
canvas.text(columns[5].x, canvas.y, totalIn, BODY_SIZE, columns[5].w, alignRight = true) canvas.text(columns[5].x, canvas.y, totalIn, BODY_SIZE, columns[5].w, alignRight = true)
canvas.text(columns[6].x, canvas.y, totalOut, BODY_SIZE, columns[6].w, alignRight = true) canvas.text(columns[6].x, canvas.y, totalOut, BODY_SIZE, columns[6].w, alignRight = true)
canvas.text(columns[7].x, canvas.y, totalBal, BODY_SIZE, columns[7].w, alignRight = true) canvas.text(columns[7].x, canvas.y, totalBal, BODY_SIZE, columns[7].w, alignRight = true)
@@ -168,7 +170,7 @@ object StockLedgerPdf {
val total = pages.size val total = pages.size
pages.forEachIndexed { index, page -> pages.forEachIndexed { index, page ->
PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, true, true).use { cs -> PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, true, true).use { cs ->
val label = "頁數 ${index + 1} / $total"
val label = UiText.t("頁數 ", "Page ") + (index + 1) + " / " + total
cs.beginText() cs.beginText()
cs.setFont(font, 9f) cs.setFont(font, 9f)
val labelX = PAGE_W - 18f - widthOf(label, 9f) val labelX = PAGE_W - 18f - widthOf(label, 9f)
@@ -187,11 +189,11 @@ object StockLedgerPdf {
stream = PDPageContentStream(doc, page) stream = PDPageContentStream(doc, page)
y = PAGE_H - 36f y = PAGE_H - 36f
openText() openText()
text(300f, y, "庫存明細報告", 14f)
text(300f, y, UiText.t("庫存明細報告", "Stock ledger report"), 14f)
y -= 18f y -= 18f
text(18f, y, "報告日期:$reportDate 報告時間:$reportTime", 9f)
text(18f, y, UiText.t("報告日期:", "Report date: ") + reportDate + UiText.t(" 報告時間:", " Report time: ") + reportTime, 9f)
val period = if (periodStart.isNotBlank() || periodEnd.isNotBlank()) { val period = if (periodStart.isNotBlank() || periodEnd.isNotBlank()) {
"報告期間:${periodStart.ifBlank { "—" }} 至 ${periodEnd.ifBlank { "—" }}"
UiText.t("報告期間:", "Report period: ") + (periodStart.ifBlank { "—" }) + UiText.t(" 至 ", " to ") + (periodEnd.ifBlank { "—" })
} else { } else {
"" ""
} }


+ 9
- 7
src/main/java/com/ffii/fpsms/modules/report/service/StockLedgerReportService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.service package com.ffii.fpsms.modules.report.service


import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import java.math.BigDecimal import java.math.BigDecimal
@@ -409,13 +411,13 @@ ORDER BY ledger.dt DESC, ledger.slId DESC
date > otherDate || (date == otherDate && id > otherId) date > otherDate || (date == otherDate && id > otherId)


private fun ledgerTypeLabel(raw: String): String = when (raw) { private fun ledgerTypeLabel(raw: String): String = when (raw) {
"OPEN" -> "開倉"
"NOR" -> "出入倉"
"TRF" -> "轉倉"
"ADJ" -> "調整"
"MISS" -> "遺失"
"BAD" -> "不良品"
"TKE" -> "盤點"
"OPEN" -> UiText.t("開倉", "Opening")
"NOR" -> UiText.t("出入倉", "In/out")
"TRF" -> UiText.t("轉倉", "Transfer")
"ADJ" -> UiText.t("調整", "Adjustment")
"MISS" -> UiText.t("遺失", "Shortage")
"BAD" -> UiText.t("不良品", "Damaged")
"TKE" -> UiText.t("盤點", "Stock take")
else -> raw else -> raw
} }




+ 9
- 7
src/main/java/com/ffii/fpsms/modules/report/service/StockLotOnhandReportService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.service package com.ffii.fpsms.modules.report.service


import com.ffii.core.utils.UiText

import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import java.time.LocalDate import java.time.LocalDate
@@ -288,7 +290,7 @@ stock_one AS (
mapOf("lotIds" to chunk), mapOf("lotIds" to chunk),
) )
n += rows.size n += rows.size
applySilSolHits(rows, hits, "入庫")
applySilSolHits(rows, hits, UiText.t("入庫", "Stock in"))
} }
return n return n
} }
@@ -310,7 +312,7 @@ stock_one AS (
mapOf("lotIds" to chunk), mapOf("lotIds" to chunk),
) )
n += rows.size n += rows.size
applySilSolHits(rows, hits, "入庫")
applySilSolHits(rows, hits, UiText.t("入庫", "Stock in"))
} }
return n return n
} }
@@ -332,7 +334,7 @@ stock_one AS (
mapOf("lotIds" to chunk), mapOf("lotIds" to chunk),
) )
n += rows.size n += rows.size
applySilSolHits(rows, hits, "出庫")
applySilSolHits(rows, hits, UiText.t("出庫", "Stock out"))
} }
return n return n
} }
@@ -346,16 +348,16 @@ stock_one AS (
val prev = hits[lotId] val prev = hits[lotId]
val newer = prev == null || val newer = prev == null ||
ts > prev.ts || ts > prev.ts ||
(ts == prev.ts && kind == "出庫" && prev.kind != "出庫")
(ts == prev.ts && kind == UiText.t("出庫", "Stock out") && prev.kind != UiText.t("出庫", "Stock out"))
if (newer) hits[lotId] = SilSolHit(ts, date, kind) if (newer) hits[lotId] = SilSolHit(ts, date, kind)
} }
} }


private fun lastTrnType(inQty: Double, outQty: Double): String = private fun lastTrnType(inQty: Double, outQty: Double): String =
when { when {
outQty > 0 && inQty <= 0 -> "出庫"
inQty > 0 && outQty <= 0 -> "入庫"
inQty > 0 && outQty > 0 -> if (outQty >= inQty) "出庫" else "入庫"
outQty > 0 && inQty <= 0 -> UiText.t("出庫", "Stock out")
inQty > 0 && outQty <= 0 -> UiText.t("入庫", "Stock in")
inQty > 0 && outQty > 0 -> if (outQty >= inQty) UiText.t("出庫", "Stock out") else UiText.t("入庫", "Stock in")
else -> "" else -> ""
} }




+ 34
- 16
src/main/java/com/ffii/fpsms/modules/report/service/StockTakeVarianceReportService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.service package com.ffii.fpsms.modules.report.service


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.common.demo.DemoFloors import com.ffii.fpsms.modules.common.demo.DemoFloors
import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
@@ -78,21 +80,36 @@ lot_root_origin AS (
ON root_po.id = root_sil.purchaseOrderId AND root_po.deleted = 0 ON root_po.id = root_sil.purchaseOrderId AND root_po.deleted = 0
""" """


private const val LOT_ROOT_CATEGORY_SQL = """
}

private fun sqlQuote(label: String) = "'" + label.replace("'", "''") + "'"

private fun lotRootCategorySql(): String {
val production = sqlQuote(UiText.t("生產", "Production"))
val opening = sqlQuote(UiText.t("期初存貨", "Opening stock"))
val adjustment = sqlQuote(UiText.t("倉存調整", "Stock adjustment"))
val purchase = sqlQuote(UiText.t("採購", "Purchase"))
val other = sqlQuote(UiText.t("其他", "Other"))
return """
CASE CASE
WHEN root_sil.jobOrderId IS NOT NULL THEN '生產'
WHEN UPPER(TRIM(COALESCE(root_sil.type, ''))) = 'OPEN' THEN '期初存貨'
WHEN UPPER(TRIM(COALESCE(root_sil.type, ''))) = 'ADJ' THEN '倉存調整'
WHEN root_sil.purchaseOrderId IS NOT NULL THEN '採購'
ELSE '其他'
WHEN root_sil.jobOrderId IS NOT NULL THEN $production
WHEN UPPER(TRIM(COALESCE(root_sil.type, ''))) = 'OPEN' THEN $opening
WHEN UPPER(TRIM(COALESCE(root_sil.type, ''))) = 'ADJ' THEN $adjustment
WHEN root_sil.purchaseOrderId IS NOT NULL THEN $purchase
ELSE $other
END""" END"""
}


private const val LOT_TYPE_DISPLAY_SQL = """
private fun lotTypeDisplaySql(): String {
val transfer = sqlQuote(UiText.t("轉倉(原:", "Transfer (from: "))
val close = sqlQuote(UiText.t(")", ")"))
val root = lotRootCategorySql()
return """
CASE CASE
WHEN UPPER(TRIM(COALESCE(origin_sil.type, ''))) = 'TRF' WHEN UPPER(TRIM(COALESCE(origin_sil.type, ''))) = 'TRF'
OR origin_sil.stockTransferId IS NOT NULL OR origin_sil.stockTransferId IS NOT NULL
THEN CONCAT('轉倉(原:', $LOT_ROOT_CATEGORY_SQL, ')')
ELSE $LOT_ROOT_CATEGORY_SQL
THEN CONCAT($transfer, $root, $close)
ELSE $root
END""" END"""
} }


@@ -299,7 +316,7 @@ data AS (
ls.approverStockTakeQty AS stkApproverQty, ls.approverStockTakeQty AS stkApproverQty,
ls.varianceQty AS stkVarianceQty, ls.varianceQty AS stkVarianceQty,
ls.date AS stockTakeDateRaw, ls.date AS stockTakeDateRaw,
$LOT_TYPE_DISPLAY_SQL AS lotTypeRaw
${lotTypeDisplaySql()} AS lotTypeRaw
FROM inventory_lot_line ill FROM inventory_lot_line ill
INNER JOIN inventory_lot il INNER JOIN inventory_lot il
ON ill.inventoryLotId = il.id ON ill.inventoryLotId = il.id
@@ -577,7 +594,7 @@ data AS (
ls.strDate AS stockTakeDateRaw, ls.strDate AS stockTakeDateRaw,
ls.approverTime AS approvalDateTimeRaw, ls.approverTime AS approvalDateTimeRaw,
ls.stockTakeRecordStatus AS stockTakeRecordStatus, ls.stockTakeRecordStatus AS stockTakeRecordStatus,
$LOT_TYPE_DISPLAY_SQL AS lotTypeRaw
${lotTypeDisplaySql()} AS lotTypeRaw
FROM latest_str ls FROM latest_str ls
INNER JOIN inventory_lot il INNER JOIN inventory_lot il
ON ls.lotId = il.id ON ls.lotId = il.id
@@ -876,7 +893,7 @@ data AS (
lb.strDate AS stockTakeDateRaw, lb.strDate AS stockTakeDateRaw,
lb.approverTime AS approvalDateTimeRaw, lb.approverTime AS approvalDateTimeRaw,
lb.stockTakeRecordStatus AS stockTakeRecordStatus, lb.stockTakeRecordStatus AS stockTakeRecordStatus,
$LOT_TYPE_DISPLAY_SQL AS lotTypeRaw
${lotTypeDisplaySql()} AS lotTypeRaw
FROM line_bounds lb FROM line_bounds lb
INNER JOIN inventory_lot_line ill ON ill.id = lb.inventoryLotLineId INNER JOIN inventory_lot_line ill ON ill.id = lb.inventoryLotLineId
INNER JOIN inventory_lot il ON ill.inventoryLotId = il.id AND il.deleted = 0 INNER JOIN inventory_lot il ON ill.inventoryLotId = il.id AND il.deleted = 0
@@ -962,23 +979,24 @@ ORDER BY


/** Overall 模式報表副標題(全系統輪次,舊 API 相容) */ /** Overall 模式報表副標題(全系統輪次,舊 API 相容) */
fun getStockTakeVarianceOverallCaption(): String = fun getStockTakeVarianceOverallCaption(): String =
"全輪次(各批號/倉別最新已完成盤點)"
UiText.t("全輪次(各批號/倉別最新已完成盤點)", "All rounds (latest completed count per lot and location)")


/** 多選輪次 Overall 模式報表副標題 */ /** 多選輪次 Overall 模式報表副標題 */
fun getStockTakeVarianceMultiRoundCaption(stockTakeRoundIds: List<Long>): String { fun getStockTakeVarianceMultiRoundCaption(stockTakeRoundIds: List<Long>): String {
if (stockTakeRoundIds.isEmpty()) return getStockTakeVarianceOverallCaption() if (stockTakeRoundIds.isEmpty()) return getStockTakeVarianceOverallCaption()
val parts = stockTakeRoundIds.map { getStockTakeRoundCaption(it) } val parts = stockTakeRoundIds.map { getStockTakeRoundCaption(it) }
return "已選輪次(各批號/倉別最新已完成盤點):${parts.joinToString(";")}"
return UiText.t("已選輪次(各批號/倉別最新已完成盤點):", "Selected rounds (latest completed count per lot and location): ") + parts.joinToString(UiText.t(";", "; "))
} }


/** 報表表頭:盤點輪次說明(與 /report/stock-take-rounds 選項格式一致) */ /** 報表表頭:盤點輪次說明(與 /report/stock-take-rounds 選項格式一致) */
fun getStockTakeRoundCaption(stockTakeRoundId: Long): String { fun getStockTakeRoundCaption(stockTakeRoundId: Long): String {
val roundLabel = UiText.t("盤點輪次", "Round ").replace("'", "''")
val sql = """ val sql = """
SELECT SELECT
CONCAT( CONCAT(
CASE CASE
WHEN NULLIF(TRIM(MAX(st.stockTakeRoundName)), '') IS NULL WHEN NULLIF(TRIM(MAX(st.stockTakeRoundName)), '') IS NULL
THEN CONCAT('盤點輪次', CAST(st.stockTakeRoundId AS CHAR))
THEN CONCAT('$roundLabel', CAST(st.stockTakeRoundId AS CHAR))
ELSE TRIM(MAX(st.stockTakeRoundName)) ELSE TRIM(MAX(st.stockTakeRoundName))
END, END,
' — ', ' — ',
@@ -994,7 +1012,7 @@ ORDER BY
mapOf("stockTakeRoundId" to stockTakeRoundId) mapOf("stockTakeRoundId" to stockTakeRoundId)
).firstOrNull() ).firstOrNull()
val cap = row?.get("cap") as? String val cap = row?.get("cap") as? String
return if (!cap.isNullOrBlank()) cap else "盤點輪次$stockTakeRoundId"
return if (!cap.isNullOrBlank()) cap else UiText.t("盤點輪次", "Round ") + stockTakeRoundId
} }


/** /**


+ 13
- 11
src/main/java/com/ffii/fpsms/modules/report/web/DoInventoryUomMismatchReportController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.DoInventoryUomMismatchReportService import com.ffii.fpsms.modules.report.service.DoInventoryUomMismatchReportService
import org.apache.poi.ss.usermodel.BorderStyle import org.apache.poi.ss.usermodel.BorderStyle
import org.apache.poi.ss.usermodel.FillPatternType import org.apache.poi.ss.usermodel.FillPatternType
@@ -69,17 +71,17 @@ class DoInventoryUomMismatchReportController(
} }


val columns = listOf( val columns = listOf(
"deliveryDate" to "預計送貨日期",
"doCode" to "送貨單號",
"supplierCode" to "供應商編號",
"supplierName" to "供應商名稱",
"itemCode" to "貨品編號",
"itemName" to "貨品名稱",
"doQty" to "送貨單數量",
"doUom" to "送貨單單位",
"mismatchLotNo" to "不符批號",
"mismatchLotQty" to "不符批數量",
"mismatchLotUom" to "不符批單位",
"deliveryDate" to UiText.t("預計送貨日期", "Planned delivery date"),
"doCode" to UiText.t("送貨單號", "Delivery note no."),
"supplierCode" to UiText.t("供應商編號", "Supplier code"),
"supplierName" to UiText.t("供應商名稱", "Supplier name"),
"itemCode" to UiText.t("貨品編號", "Item code"),
"itemName" to UiText.t("貨品名稱", "Item name"),
"doQty" to UiText.t("送貨單數量", "DN qty"),
"doUom" to UiText.t("送貨單單位", "DN UOM"),
"mismatchLotNo" to UiText.t("不符批號", "Mismatched lot"),
"mismatchLotQty" to UiText.t("不符批數量", "Mismatched qty"),
"mismatchLotUom" to UiText.t("不符批單位", "Mismatched UOM"),
) )


var r = 0 var r = 0


+ 21
- 19
src/main/java/com/ffii/fpsms/modules/report/web/DoUserPickAuditReportController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.DoUserPickAuditReportService import com.ffii.fpsms.modules.report.service.DoUserPickAuditReportService
import org.apache.poi.ss.usermodel.BorderStyle import org.apache.poi.ss.usermodel.BorderStyle
import org.apache.poi.ss.usermodel.FillPatternType import org.apache.poi.ss.usermodel.FillPatternType
@@ -52,15 +54,15 @@ class DoUserPickAuditReportController(
contentType = MediaType.parseMediaType( contentType = MediaType.parseMediaType(
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
) )
setContentDispositionFormData("attachment", "成品出倉揀貨合規報告.xlsx")
set("filename", "成品出倉揀貨合規報告.xlsx")
setContentDispositionFormData("attachment", UiText.t("成品出倉揀貨合規報告.xlsx", "FG outbound pick compliance.xlsx"))
set("filename", UiText.t("成品出倉揀貨合規報告.xlsx", "FG outbound pick compliance.xlsx"))
} }
return ResponseEntity(bytes, headers, HttpStatus.OK) return ResponseEntity(bytes, headers, HttpStatus.OK)
} }


private fun buildExcel(rows: List<Map<String, Any?>>): ByteArray { private fun buildExcel(rows: List<Map<String, Any?>>): ByteArray {
val workbook = XSSFWorkbook() val workbook = XSSFWorkbook()
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName("DO揀貨人員稽核"))
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(UiText.t("DO揀貨人員稽核", "Delivery pick audit")))
val headerStyle = workbook.createCellStyle().apply { val headerStyle = workbook.createCellStyle().apply {
alignment = HorizontalAlignment.CENTER alignment = HorizontalAlignment.CENTER
verticalAlignment = VerticalAlignment.CENTER verticalAlignment = VerticalAlignment.CENTER
@@ -82,20 +84,20 @@ class DoUserPickAuditReportController(


// key = SQL alias; label = Chinese Excel header // key = SQL alias; label = Chinese Excel header
val columns = listOf( val columns = listOf(
"datetime" to "完成時間",
"ticketNo" to "提票號碼",
"itemCode" to "貨品編號",
"itemName" to "貨品名稱",
"isEgg" to "是否雞蛋類",
"suggestLot" to "建議批號",
"actualLot" to "實際批號",
"qty" to "所需數量",
"actualQty" to "實際提料數量",
"lotBeforeQty" to "提料前庫存",
"lotAfterQty" to "提料後庫存",
"issueJustComplete" to "跳過提料(使用「已完成」)",
"user" to "提料人",
"issueTypes" to "偏離類型",
"datetime" to UiText.t("完成時間", "Completed at"),
"ticketNo" to UiText.t("提票號碼", "Ticket no."),
"itemCode" to UiText.t("貨品編號", "Item code"),
"itemName" to UiText.t("貨品名稱", "Item name"),
"isEgg" to UiText.t("是否雞蛋類", "Egg item"),
"suggestLot" to UiText.t("建議批號", "Suggested lot"),
"actualLot" to UiText.t("實際批號", "Actual lot"),
"qty" to UiText.t("所需數量", "Required qty"),
"actualQty" to UiText.t("實際提料數量", "Actual pick qty"),
"lotBeforeQty" to UiText.t("提料前庫存", "Stock before pick"),
"lotAfterQty" to UiText.t("提料後庫存", "Stock after pick"),
"issueJustComplete" to UiText.t("跳過提料(使用「已完成」)", "Pick skipped (marked completed)"),
"user" to UiText.t("提料人", "Picker"),
"issueTypes" to UiText.t("偏離類型", "Deviation type"),
) )


var r = 0 var r = 0
@@ -117,12 +119,12 @@ class DoUserPickAuditReportController(
null -> cell.setCellValue("") null -> cell.setCellValue("")
is Number -> { is Number -> {
if (key == "issueJustComplete") { if (key == "issueJustComplete") {
cell.setCellValue(if (v.toDouble() != 0.0) "是" else "否")
cell.setCellValue(if (v.toDouble() != 0.0) UiText.t("是", "Yes") else UiText.t("否", "No"))
} else { } else {
cell.setCellValue(v.toDouble()) cell.setCellValue(v.toDouble())
} }
} }
is Boolean -> cell.setCellValue(if (v) "是" else "否")
is Boolean -> cell.setCellValue(if (v) UiText.t("是", "Yes") else UiText.t("否", "No"))
else -> cell.setCellValue(v.toString()) else -> cell.setCellValue(v.toString())
} }
} }


+ 15
- 13
src/main/java/com/ffii/fpsms/modules/report/web/FGStockOutTraceabilityReportController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.FGStockOutTraceabilityReportService import com.ffii.fpsms.modules.report.service.FGStockOutTraceabilityReportService
import com.ffii.fpsms.modules.report.service.ReportService import com.ffii.fpsms.modules.report.service.ReportService
import org.springframework.http.HttpHeaders import org.springframework.http.HttpHeaders
@@ -122,7 +124,7 @@ class FGStockOutTraceabilityReportController(


private fun createFGStockOutTraceabilityExcel(dbData: List<Map<String, Any>>): ByteArray { private fun createFGStockOutTraceabilityExcel(dbData: List<Map<String, Any>>): ByteArray {
val workbook = XSSFWorkbook() val workbook = XSSFWorkbook()
val reportTitle = "成品出倉追蹤報告"
val reportTitle = UiText.t("成品出倉追蹤報告", "FG outbound traceability report")
val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle) val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle)
val sheet = workbook.createSheet(safeSheetName) val sheet = workbook.createSheet(safeSheetName)


@@ -172,17 +174,17 @@ class FGStockOutTraceabilityReportController(
} }


val headers = listOf( val headers = listOf(
"貨品編號",
"貨品名稱",
"單位",
"出貨單號",
"提料單號",
"批號",
"到期日",
"出貨數量",
"提料人",
"存貨位置",
"提料備註",
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("單位", "UOM"),
UiText.t("出貨單號", "Shipment no."),
UiText.t("提料單號", "Pick order no."),
UiText.t("批號", "Lot no."),
UiText.t("到期日", "Expiry date"),
UiText.t("出貨數量", "Shipped qty"),
UiText.t("提料人", "Picker"),
UiText.t("存貨位置", "Stock location"),
UiText.t("提料備註", "Pick notes"),
) )


val titleStyle = workbook.createCellStyle().apply { val titleStyle = workbook.createCellStyle().apply {
@@ -276,7 +278,7 @@ class FGStockOutTraceabilityReportController(
} }
} }
summaryRow.createCell(6).apply { summaryRow.createCell(6).apply {
setCellValue("總出倉量 :")
setCellValue(UiText.t("總出倉量 :", "Total outbound qty: "))
cellStyle = summaryLabelInExpiryColStyle cellStyle = summaryLabelInExpiryColStyle
} }
summaryRow.createCell(7).apply { summaryRow.createCell(7).apply {


+ 24
- 22
src/main/java/com/ffii/fpsms/modules/report/web/ItemQcFailReportController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web


import com.ffii.core.utils.UiText

import org.springframework.http.* import org.springframework.http.*
import org.springframework.web.bind.annotation.* import org.springframework.web.bind.annotation.*
import com.ffii.fpsms.modules.report.service.ItemQcFailReportService import com.ffii.fpsms.modules.report.service.ItemQcFailReportService
@@ -49,15 +51,15 @@ class ItemQcFailReportController(


val pdfParts = mutableListOf<ByteArray>() val pdfParts = mutableListOf<ByteArray>()
if (passedRows.isNotEmpty()) { if (passedRows.isNotEmpty()) {
pdfParts.add(createItemQcPdf(stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, passedRows, "合格"))
pdfParts.add(createItemQcPdf(stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, passedRows, UiText.t("合格", "Pass")))
} }
if (failedRows.isNotEmpty()) { if (failedRows.isNotEmpty()) {
pdfParts.add(createItemQcPdf(stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, failedRows, "不合格"))
pdfParts.add(createItemQcPdf(stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, failedRows, UiText.t("不合格", "Fail")))
} }


val pdfBytes = when { val pdfBytes = when {
pdfParts.isEmpty() -> createItemQcPdf( pdfParts.isEmpty() -> createItemQcPdf(
stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, emptyList(), "合格"
stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, emptyList(), UiText.t("合格", "Pass")
) )
pdfParts.size == 1 -> pdfParts[0] pdfParts.size == 1 -> pdfParts[0]
else -> reportService.mergePdfBytes(pdfParts) else -> reportService.mergePdfBytes(pdfParts)
@@ -154,7 +156,7 @@ class ItemQcFailReportController(
return when (qcType?.trim()?.uppercase()) { return when (qcType?.trim()?.uppercase()) {
"IQC" -> "IQC" "IQC" -> "IQC"
"EPQC" -> "EPQC" "EPQC" -> "EPQC"
else -> "全部"
else -> UiText.t("全部", "All")
} }
} }


@@ -174,8 +176,8 @@ class ItemQcFailReportController(
qcType: String?, qcType: String?,
): ByteArray { ): ByteArray {
val workbook: Workbook = XSSFWorkbook() val workbook: Workbook = XSSFWorkbook()
writeQcSheet(workbook, "合格", passedRows, lastInDateStart, lastInDateEnd, qcType)
writeQcSheet(workbook, "不合格", failedRows, lastInDateStart, lastInDateEnd, qcType)
writeQcSheet(workbook, UiText.t("合格", "Pass"), passedRows, lastInDateStart, lastInDateEnd, qcType)
writeQcSheet(workbook, UiText.t("不合格", "Fail"), failedRows, lastInDateStart, lastInDateEnd, qcType)
return workbookToByteArray(workbook) return workbookToByteArray(workbook)
} }


@@ -187,7 +189,7 @@ class ItemQcFailReportController(
lastInDateEnd: String?, lastInDateEnd: String?,
qcType: String?, qcType: String?,
) { ) {
val reportTitle = "庫存品質檢測報告"
val reportTitle = UiText.t("庫存品質檢測報告", "Stock QC report")
val safeSheetName = WorkbookUtil.createSafeSheetName(sheetLabel) val safeSheetName = WorkbookUtil.createSafeSheetName(sheetLabel)
val sheet = workbook.createSheet(safeSheetName) val sheet = workbook.createSheet(safeSheetName)


@@ -227,7 +229,7 @@ class ItemQcFailReportController(
val startTxt = lastInDateStart ?: "" val startTxt = lastInDateStart ?: ""
val endTxt = lastInDateEnd ?: "" val endTxt = lastInDateEnd ?: ""
val qcTypeTxt = resolveQcTypeLabel(qcType) val qcTypeTxt = resolveQcTypeLabel(qcType)
cell.setCellValue("QC 檢測日期: ${startTxt} - ${endTxt} QC 類型: $qcTypeTxt")
cell.setCellValue(UiText.t("QC 檢測日期: ", "QC date: ") + (startTxt) + " - " + (endTxt) + UiText.t(" QC 類型: ", " QC type: ") + qcTypeTxt)
} }


val headerStyle = workbook.createCellStyle().apply { val headerStyle = workbook.createCellStyle().apply {
@@ -286,20 +288,20 @@ class ItemQcFailReportController(
} }


val headers = listOf( val headers = listOf(
"庫存類別",
"物料編號",
"物料名稱",
"單位",
"批號",
"到期日",
"QC 類型",
"QC 範本",
"檢測標準",
"批量",
"不合格數量",
"實測值",
"備註",
"訂單/工單",
UiText.t("庫存類別", "Stock category"),
UiText.t("物料編號", "Material code"),
UiText.t("物料名稱", "Material name"),
UiText.t("單位", "UOM"),
UiText.t("批號", "Lot no."),
UiText.t("到期日", "Expiry date"),
UiText.t("QC 類型", "QC type"),
UiText.t("QC 範本", "QC template"),
UiText.t("檢測標準", "QC standard"),
UiText.t("批量", "Lot qty"),
UiText.t("不合格數量", "Fail qty"),
UiText.t("實測值", "Measured value"),
UiText.t("備註", "Notes"),
UiText.t("訂單/工單", "Order / job order"),
) )


run { run {


+ 15
- 13
src/main/java/com/ffii/fpsms/modules/report/web/MaterialStockOutTraceabilityReportController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.MaterialStockOutTraceabilityReportService import com.ffii.fpsms.modules.report.service.MaterialStockOutTraceabilityReportService
import com.ffii.fpsms.modules.report.service.ReportService import com.ffii.fpsms.modules.report.service.ReportService
import org.springframework.http.HttpHeaders import org.springframework.http.HttpHeaders
@@ -207,7 +209,7 @@ class MaterialStockOutTraceabilityReportController(
lastOutDateEnd: String?, lastOutDateEnd: String?,
): ByteArray { ): ByteArray {
val workbook = XSSFWorkbook() val workbook = XSSFWorkbook()
val reportTitle = "物料出倉追蹤報告"
val reportTitle = UiText.t("物料出倉追蹤報告", "Material outbound traceability report")
val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle) val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle)
val sheet = workbook.createSheet(safeSheetName) val sheet = workbook.createSheet(safeSheetName)


@@ -257,17 +259,17 @@ class MaterialStockOutTraceabilityReportController(
} }


val headers = listOf( val headers = listOf(
"貨品編號",
"貨品名稱",
"單位",
"工單編號",
"提料單號",
"批號",
"到期日",
"出貨數量",
"提料人",
"存貨位置",
"提料備註",
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("單位", "UOM"),
UiText.t("工單編號", "Job order no."),
UiText.t("提料單號", "Pick order no."),
UiText.t("批號", "Lot no."),
UiText.t("到期日", "Expiry date"),
UiText.t("出貨數量", "Shipped qty"),
UiText.t("提料人", "Picker"),
UiText.t("存貨位置", "Stock location"),
UiText.t("提料備註", "Pick notes"),
) )


// Header row // Header row
@@ -328,7 +330,7 @@ class MaterialStockOutTraceabilityReportController(
} }
} }
summaryRow.createCell(6).apply { summaryRow.createCell(6).apply {
setCellValue("總出倉量 :")
setCellValue(UiText.t("總出倉量 :", "Total outbound qty: "))
cellStyle = summaryLabelInExpiryColStyle cellStyle = summaryLabelInExpiryColStyle
} }
summaryRow.createCell(7).apply { summaryRow.createCell(7).apply {


+ 25
- 23
src/main/java/com/ffii/fpsms/modules/report/web/ReportController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web


import com.ffii.core.utils.UiText

import net.sf.jasperreports.engine.* import net.sf.jasperreports.engine.*
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource
import org.apache.poi.ss.usermodel.BorderStyle import org.apache.poi.ss.usermodel.BorderStyle
@@ -788,15 +790,15 @@ class ReportController(
): ByteArray { ): ByteArray {
val workbook = XSSFWorkbook() val workbook = XSSFWorkbook()
val styles = createCommonWorkbookStyles(workbook) val styles = createCommonWorkbookStyles(workbook)
val reportTitle = "入倉追蹤報告"
val reportTitle = UiText.t("入倉追蹤報告", "Stock-in traceability report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))


val headers = listOf( val headers = listOf(
"貨品編號", "貨品名稱", "單位",
"送貨單編號", "批號", "到期日",
"上架數量", "入庫檢查樣品數量", "入庫檢查缺陷數量",
"入庫檢查缺陷百分比", "入庫檢查結果", "入庫檢查備註",
"存貨位置", "供應商名稱",
UiText.t("貨品編號", "Item code"), UiText.t("貨品名稱", "Item name"), UiText.t("單位", "UOM"),
UiText.t("送貨單編號", "Delivery note no."), UiText.t("批號", "Lot no."), UiText.t("到期日", "Expiry date"),
UiText.t("上架數量", "Put-away qty"), UiText.t("入庫檢查樣品數量", "Stock-in check sample qty"), UiText.t("入庫檢查缺陷數量", "Stock-in check defect qty"),
UiText.t("入庫檢查缺陷百分比", "Stock-in check defect %"), UiText.t("入庫檢查結果", "Stock-in check result"), UiText.t("入庫檢查備註", "Stock-in check notes"),
UiText.t("存貨位置", "Stock location"), UiText.t("供應商名稱", "Supplier name"),
) )
val totalColumns = headers.size val totalColumns = headers.size
var rowIndex = 0 var rowIndex = 0
@@ -815,13 +817,13 @@ class ReportController(
")" ")"
val subtitleRow = sheet.createRow(rowIndex++) val subtitleRow = sheet.createRow(rowIndex++)
subtitleRow.createCell(0).apply { subtitleRow.createCell(0).apply {
setCellValue("報告日期:$reportDateTime")
setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime)
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 5)) sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 5))
subtitleRow.createCell(6).apply { subtitleRow.createCell(6).apply {
val cap = (lastInDateStart.trim().ifBlank { "" }) + " 至 " + (lastInDateEnd.trim().ifBlank { "" })
setCellValue("最後入倉日期:${cap.trim()}")
val cap = (lastInDateStart.trim().ifBlank { "" }) + UiText.t(" 至 ", " to ") + (lastInDateEnd.trim().ifBlank { "" })
setCellValue(UiText.t("最後入倉日期:", "Last stock-in date: ") + (cap.trim()))
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 6, totalColumns - 1)) sheet.addMergedRegion(CellRangeAddress(1, 1, 6, totalColumns - 1))
@@ -855,7 +857,7 @@ class ReportController(
// - 上架數量 (col 6) // - 上架數量 (col 6)
// - 入庫檢查樣品數量 (col 7) // - 入庫檢查樣品數量 (col 7)
// - 入庫檢查缺陷數量 (col 8) // - 入庫檢查缺陷數量 (col 8)
r.getCell(5).apply { setCellValue("合計:"); cellStyle = styles.sumLabel }
r.getCell(5).apply { setCellValue(UiText.t("合計:", "Total: ")); cellStyle = styles.sumLabel }
setNumberCellFromFormatted(r, 6, totalStockIn, styles.sumQty, styles.dash, preferInt = false) setNumberCellFromFormatted(r, 6, totalStockIn, styles.sumQty, styles.dash, preferInt = false)
setNumberCellFromFormatted(r, 7, _totalSample, styles.sumQty, styles.dash, preferInt = false) setNumberCellFromFormatted(r, 7, _totalSample, styles.sumQty, styles.dash, preferInt = false)
setNumberCellFromFormatted(r, 8, _totalDefect, styles.sumQty, styles.dash, preferInt = false) setNumberCellFromFormatted(r, 8, _totalDefect, styles.sumQty, styles.dash, preferInt = false)
@@ -944,12 +946,12 @@ class ReportController(
): ByteArray { ): ByteArray {
val workbook = XSSFWorkbook() val workbook = XSSFWorkbook()
val styles = createCommonWorkbookStyles(workbook) val styles = createCommonWorkbookStyles(workbook)
val reportTitle = "成品出倉報告"
val reportTitle = UiText.t("成品出倉報告", "Finished goods outbound report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))


val headers = listOf( val headers = listOf(
"貨品編號", "貨品名稱", "單位",
"送貨日期", "DN編號", "送貨訂單編號", "門店名稱", "數量", "貨車",
UiText.t("貨品編號", "Item code"), UiText.t("貨品名稱", "Item name"), UiText.t("單位", "UOM"),
UiText.t("送貨日期", "Delivery date"), UiText.t("DN編號", "DN no."), UiText.t("送貨訂單編號", "Delivery order no."), UiText.t("門店名稱", "Shop name"), UiText.t("數量", "Qty"), UiText.t("貨車", "Truck"),
) )
val totalColumns = headers.size val totalColumns = headers.size
var rowIndex = 0 var rowIndex = 0
@@ -968,17 +970,17 @@ class ReportController(
")" ")"
val subtitleRow = sheet.createRow(rowIndex++) val subtitleRow = sheet.createRow(rowIndex++)
subtitleRow.createCell(0).apply { subtitleRow.createCell(0).apply {
setCellValue("報告日期:$reportDateTime")
setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime)
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 2)) sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 2))
subtitleRow.createCell(3).apply { subtitleRow.createCell(3).apply {
setCellValue("成品出倉日期:${lastOutDateStart.trim()} 至 ${lastOutDateEnd.trim()}")
setCellValue(UiText.t("成品出倉日期:", "FG outbound date: ") + (lastOutDateStart.trim()) + UiText.t(" 至 ", " to ") + (lastOutDateEnd.trim()))
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 3, 6)) sheet.addMergedRegion(CellRangeAddress(1, 1, 3, 6))
subtitleRow.createCell(7).apply { subtitleRow.createCell(7).apply {
setCellValue("年份:$year")
setCellValue(UiText.t("年份:", "Year: ") + year)
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 7, totalColumns - 1)) sheet.addMergedRegion(CellRangeAddress(1, 1, 7, totalColumns - 1))
@@ -1008,7 +1010,7 @@ class ReportController(
} }
} }
r.getCell(6).apply { r.getCell(6).apply {
setCellValue("每單交貨總數:")
setCellValue(UiText.t("每單交貨總數:", "Delivery total: "))
cellStyle = styles.sumLabel cellStyle = styles.sumLabel
} }
r.getCell(7).apply { r.getCell(7).apply {
@@ -1078,14 +1080,14 @@ class ReportController(
): ByteArray { ): ByteArray {
val workbook = XSSFWorkbook() val workbook = XSSFWorkbook()
val styles = createCommonWorkbookStyles(workbook) val styles = createCommonWorkbookStyles(workbook)
val reportTitle = "庫存結餘報告"
val reportTitle = UiText.t("庫存結餘報告", "Stock balance report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))


val headers = listOf( val headers = listOf(
"貨品編號", "貨品名稱", "單位",
"期初存量", "纍計存入量", "纍計存出量",
"錯誤輸入或遺失", "盤盈虧", "不良品棄置",
"現存存貨", "單位均價", "庫存總價值",
UiText.t("貨品編號", "Item code"), UiText.t("貨品名稱", "Item name"), UiText.t("單位", "UOM"),
UiText.t("期初存量", "Opening qty"), UiText.t("纍計存入量", "Cumulative stock in"), UiText.t("纍計存出量", "Cumulative stock out"),
UiText.t("錯誤輸入或遺失", "Mis-entry or loss"), UiText.t("盤盈虧", "Variance"), UiText.t("不良品棄置", "Damaged disposal"),
UiText.t("現存存貨", "On hand"), UiText.t("單位均價", "Avg unit price"), UiText.t("庫存總價值", "Total stock value"),
) )
val totalColumns = headers.size val totalColumns = headers.size
var rowIndex = 0 var rowIndex = 0
@@ -1104,7 +1106,7 @@ class ReportController(
")" ")"
val subtitleRow = sheet.createRow(rowIndex++) val subtitleRow = sheet.createRow(rowIndex++)
subtitleRow.createCell(0).apply { subtitleRow.createCell(0).apply {
setCellValue("報告日期:$reportDateTime")
setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime)
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, totalColumns - 1)) sheet.addMergedRegion(CellRangeAddress(1, 1, 0, totalColumns - 1))


+ 38
- 36
src/main/java/com/ffii/fpsms/modules/report/web/SemiFGProductionAnalysisReportController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web


import com.ffii.core.utils.UiText

import net.sf.jasperreports.engine.* import net.sf.jasperreports.engine.*
import org.springframework.http.* import org.springframework.http.*
import org.springframework.web.bind.annotation.* import org.springframework.web.bind.annotation.*
@@ -160,7 +162,7 @@ class SemiFGProductionAnalysisReportController(


val excelBytes = createSemiFGProductionAnalysisExcel( val excelBytes = createSemiFGProductionAnalysisExcel(
dbData = dbData, dbData = dbData,
reportTitle = "成品/半成品生產分析報告",
reportTitle = UiText.t("成品/半成品生產分析報告", "Finished / semi-finished production report"),
year = year year = year
) )


@@ -249,13 +251,13 @@ class SemiFGProductionAnalysisReportController(


val infoRow = sheet.createRow(rowIndex++) val infoRow = sheet.createRow(rowIndex++)
val reportDateCell = infoRow.createCell(0) val reportDateCell = infoRow.createCell(0)
reportDateCell.setCellValue("報告日期:${LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))}")
reportDateCell.setCellValue(UiText.t("報告日期:", "Report date: ") + (LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))))
reportDateCell.cellStyle = infoStyle reportDateCell.cellStyle = infoStyle
val reportTimeCell = infoRow.createCell(6) val reportTimeCell = infoRow.createCell(6)
reportTimeCell.setCellValue("報告時間:${LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"))}")
reportTimeCell.setCellValue(UiText.t("報告時間:", "Report time: ") + (LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"))))
reportTimeCell.cellStyle = infoStyle reportTimeCell.cellStyle = infoStyle
val reportYearCell = infoRow.createCell(11) val reportYearCell = infoRow.createCell(11)
reportYearCell.setCellValue("年份:${year?.takeIf { it.isNotBlank() && it != "All" } ?: "All"}")
reportYearCell.setCellValue(UiText.t("年份:", "Year: ") + (year?.takeIf { it.isNotBlank() && it != "All" } ?: "All"))
reportYearCell.cellStyle = infoStyle reportYearCell.cellStyle = infoStyle
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 5)) sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 5))
sheet.addMergedRegion(CellRangeAddress(1, 1, 6, 10)) sheet.addMergedRegion(CellRangeAddress(1, 1, 6, 10))
@@ -264,22 +266,22 @@ class SemiFGProductionAnalysisReportController(
rowIndex++ // spacer row rowIndex++ // spacer row


val headers = listOf( val headers = listOf(
"貨品編號",
"貨品名稱",
"單位",
"一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月",
"上架總計"
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("單位", "UOM"),
UiText.t("一月", "Jan"),
UiText.t("二月", "Feb"),
UiText.t("三月", "Mar"),
UiText.t("四月", "Apr"),
UiText.t("五月", "May"),
UiText.t("六月", "Jun"),
UiText.t("七月", "Jul"),
UiText.t("八月", "Aug"),
UiText.t("九月", "Sep"),
UiText.t("十月", "Oct"),
UiText.t("十一月", "Nov"),
UiText.t("十二月", "Dec"),
UiText.t("上架總計", "Put-away total")
) )


val headerRow = sheet.createRow(rowIndex++) val headerRow = sheet.createRow(rowIndex++)
@@ -341,15 +343,15 @@ class SemiFGProductionAnalysisReportController(
"qtyJul", "qtyAug", "qtySep", "qtyOct", "qtyNov", "qtyDec", "qtyJul", "qtyAug", "qtySep", "qtyOct", "qtyNov", "qtyDec",
) )
val monthLabels = listOf( val monthLabels = listOf(
"一月", "二月", "三月", "四月", "五月", "六月",
"七月", "八月", "九月", "十月", "十一月", "十二月",
UiText.t("一月", "Jan"), UiText.t("二月", "Feb"), UiText.t("三月", "Mar"), UiText.t("四月", "Apr"), UiText.t("五月", "May"), UiText.t("六月", "Jun"),
UiText.t("七月", "Jul"), UiText.t("八月", "Aug"), UiText.t("九月", "Sep"), UiText.t("十月", "Oct"), UiText.t("十一月", "Nov"), UiText.t("十二月", "Dec"),
) )


val dataSheetName = WorkbookUtil.createSafeSheetName("圖表數據")
val dataSheetName = WorkbookUtil.createSafeSheetName(UiText.t("圖表數據", "Chart data"))
val dataSheet = workbook.createSheet(dataSheetName) val dataSheet = workbook.createSheet(dataSheetName)


val headerRow = dataSheet.createRow(0) val headerRow = dataSheet.createRow(0)
headerRow.createCell(0).setCellValue("貨品編號")
headerRow.createCell(0).setCellValue(UiText.t("貨品編號", "Item code"))
monthLabels.forEachIndexed { i, label -> monthLabels.forEachIndexed { i, label ->
headerRow.createCell(1 + i).setCellValue(label) headerRow.createCell(1 + i).setCellValue(label)
} }
@@ -364,7 +366,7 @@ class SemiFGProductionAnalysisReportController(


val zColIndex = CellReference.convertColStringToIndex("Z") val zColIndex = CellReference.convertColStringToIndex("Z")
val zHeader = dataSheet.getRow(0) ?: dataSheet.createRow(0) val zHeader = dataSheet.getRow(0) ?: dataSheet.createRow(0)
zHeader.createCell(zColIndex).setCellValue("全部")
zHeader.createCell(zColIndex).setCellValue(UiText.t("全部", "All"))
dbData.forEachIndexed { idx, row -> dbData.forEachIndexed { idx, row ->
val r = dataSheet.getRow(1 + idx) ?: dataSheet.createRow(1 + idx) val r = dataSheet.getRow(1 + idx) ?: dataSheet.createRow(1 + idx)
r.createCell(zColIndex).setCellValue(row["itemNo"]?.toString() ?: "") r.createCell(zColIndex).setCellValue(row["itemNo"]?.toString() ?: "")
@@ -373,14 +375,14 @@ class SemiFGProductionAnalysisReportController(
val lastDataRow1Based = 1 + dbData.size val lastDataRow1Based = 1 + dbData.size
val zListEnd1Based = 1 + dbData.size val zListEnd1Based = 1 + dbData.size


val chartSheetName = WorkbookUtil.createSafeSheetName("生產圖表")
val chartSheetName = WorkbookUtil.createSafeSheetName(UiText.t("生產圖表", "Production chart"))
val chartSheet = workbook.createSheet(chartSheetName) val chartSheet = workbook.createSheet(chartSheetName)


val labelR = chartSheet.createRow(0) val labelR = chartSheet.createRow(0)
labelR.createCell(0).setCellValue("選擇貨品編號")
labelR.createCell(0).setCellValue(UiText.t("選擇貨品編號", "Select item code"))
val filterCell = labelR.createCell(1) val filterCell = labelR.createCell(1)
val defaultItemNo = dbData.firstOrNull()?.get("itemNo")?.toString()?.trim() val defaultItemNo = dbData.firstOrNull()?.get("itemNo")?.toString()?.trim()
filterCell.setCellValue(defaultItemNo?.takeIf { it.isNotBlank() } ?: "全部")
filterCell.setCellValue(defaultItemNo?.takeIf { it.isNotBlank() } ?: UiText.t("全部", "All"))


val dvHelper: DataValidationHelper = chartSheet.dataValidationHelper val dvHelper: DataValidationHelper = chartSheet.dataValidationHelper
val listFormula = "'$dataSheetName'!\$Z\$1:\$Z\$$zListEnd1Based" val listFormula = "'$dataSheetName'!\$Z\$1:\$Z\$$zListEnd1Based"
@@ -388,9 +390,9 @@ class SemiFGProductionAnalysisReportController(
val regions = CellRangeAddressList(0, 0, 1, 1) val regions = CellRangeAddressList(0, 0, 1, 1)
val validation = dvHelper.createValidation(constraint, regions) val validation = dvHelper.createValidation(constraint, regions)
validation.showErrorBox = true validation.showErrorBox = true
validation.createErrorBox("無效選擇", "請從清單中選擇貨品編號或「全部」。")
validation.createErrorBox(UiText.t("無效選擇", "Invalid choice"), UiText.t("請從清單中選擇貨品編號或「全部」。", "Choose an item code from the list, or All."))
validation.showPromptBox = true validation.showPromptBox = true
validation.createPromptBox("篩選", "選擇貨品編號檢視該品項各月數量;選擇「全部」顯示所有品項加總。")
validation.createPromptBox(UiText.t("篩選", "Filter"), UiText.t("選擇貨品編號檢視該品項各月數量;選擇「全部」顯示所有品項加總。", "Select an item code to see monthly quantities, or All for the total of every item."))
chartSheet.addValidationData(validation) chartSheet.addValidationData(validation)


val catRowIndex = 3 val catRowIndex = 3
@@ -406,26 +408,26 @@ class SemiFGProductionAnalysisReportController(
val formula = if (lastDataRow1Based < 2) { val formula = if (lastDataRow1Based < 2) {
"0" "0"
} else { } else {
"IF(TRIM(\$B\$1)=\"全部\",SUM('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based),IFERROR(INDEX('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based,MATCH(TRIM(\$B\$1),'$dataSheetName'!\$A\$2:\$A\$$lastDataRow1Based,0)),0))"
"IF(TRIM(\$B\$1)=\"${UiText.t("全部", "All")}\",SUM('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based),IFERROR(INDEX('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based,MATCH(TRIM(\$B\$1),'$dataSheetName'!\$A\$2:\$A\$$lastDataRow1Based,0)),0))"
} }
valRow.createCell(firstMonthCol + i).setCellFormula(formula) valRow.createCell(firstMonthCol + i).setCellFormula(formula)
} }
catRow.createCell(lastMonthCol + 1).setCellValue("總和")
catRow.createCell(lastMonthCol + 1).setCellValue(UiText.t("總和", "Total"))
valRow.createCell(lastMonthCol + 1).setCellFormula("SUM(B5:M5)") valRow.createCell(lastMonthCol + 1).setCellFormula("SUM(B5:M5)")


val drawing = chartSheet.createDrawingPatriarch() val drawing = chartSheet.createDrawingPatriarch()
val anchor = XSSFClientAnchor(0, 0, 0, 0, 1, 6, 14, 28) val anchor = XSSFClientAnchor(0, 0, 0, 0, 1, 6, 14, 28)
val chart = drawing.createChart(anchor) val chart = drawing.createChart(anchor)
chart.setTitleText("各月生產數量(依選擇之貨品編號)")
chart.setTitleText(UiText.t("各月生產數量(依選擇之貨品編號)", "Monthly production quantity (selected item)"))
chart.setTitleOverlay(false) chart.setTitleOverlay(false)


val legend = chart.getOrAddLegend() val legend = chart.getOrAddLegend()
legend.position = LegendPosition.BOTTOM legend.position = LegendPosition.BOTTOM


val bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM) val bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM)
bottomAxis.setTitle("月份")
bottomAxis.setTitle(UiText.t("月份", "Month"))
val leftAxis = chart.createValueAxis(AxisPosition.LEFT) val leftAxis = chart.createValueAxis(AxisPosition.LEFT)
leftAxis.setTitle("生產數量")
leftAxis.setTitle(UiText.t("生產數量", "Production qty"))


val catRangeAddr = CellRangeAddress(catRowIndex, catRowIndex, firstMonthCol, lastMonthCol) val catRangeAddr = CellRangeAddress(catRowIndex, catRowIndex, firstMonthCol, lastMonthCol)
val valRangeAddr = CellRangeAddress(valRowIndex, valRowIndex, firstMonthCol, lastMonthCol) val valRangeAddr = CellRangeAddress(valRowIndex, valRowIndex, firstMonthCol, lastMonthCol)
@@ -435,7 +437,7 @@ class SemiFGProductionAnalysisReportController(
val barData = chart.createData(ChartTypes.BAR, bottomAxis, leftAxis) as XDDFBarChartData val barData = chart.createData(ChartTypes.BAR, bottomAxis, leftAxis) as XDDFBarChartData
barData.barDirection = BarDirection.COL barData.barDirection = BarDirection.COL
val series = barData.addSeries(categories, values) val series = barData.addSeries(categories, values)
series.setTitle("生產數量", null)
series.setTitle(UiText.t("生產數量", "Production qty"), null)
chart.plot(barData) chart.plot(barData)


chartSheet.setColumnWidth(0, 18 * 256) chartSheet.setColumnWidth(0, 18 * 256)


+ 40
- 38
src/main/java/com/ffii/fpsms/modules/report/web/StockItemConsumptionTrendReportController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web


import com.ffii.core.utils.UiText

import net.sf.jasperreports.engine.* import net.sf.jasperreports.engine.*
import org.springframework.http.* import org.springframework.http.*
import org.springframework.web.bind.annotation.* import org.springframework.web.bind.annotation.*
@@ -155,7 +157,7 @@ class StockItemConsumptionTrendReportController(


val excelBytes = createStockItemConsumptionTrendExcel( val excelBytes = createStockItemConsumptionTrendExcel(
dbData = dbData, dbData = dbData,
reportTitle = "庫存材料消耗趨勢報告",
reportTitle = UiText.t("庫存材料消耗趨勢報告", "Material consumption trend report"),
year = year, year = year,
lastOutDateStart = lastOutDateStart, lastOutDateStart = lastOutDateStart,
lastOutDateEnd = lastOutDateEnd lastOutDateEnd = lastOutDateEnd
@@ -261,17 +263,17 @@ class StockItemConsumptionTrendReportController(
val infoRow = sheet.createRow(rowIndex++) val infoRow = sheet.createRow(rowIndex++)
val reportDateCell = infoRow.createCell(0) val reportDateCell = infoRow.createCell(0)
reportDateCell.setCellValue( reportDateCell.setCellValue(
"報告日期:${LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))}"
UiText.t("報告日期:", "Report date: ") + (LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))
) )
reportDateCell.cellStyle = infoStyle reportDateCell.cellStyle = infoStyle


val reportTimeCell = infoRow.createCell(6) val reportTimeCell = infoRow.createCell(6)
reportTimeCell.setCellValue("報告時間:${LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"))}")
reportTimeCell.setCellValue(UiText.t("報告時間:", "Report time: ") + (LocalTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss"))))
reportTimeCell.cellStyle = infoStyle reportTimeCell.cellStyle = infoStyle


val reportYearCell = infoRow.createCell(11) val reportYearCell = infoRow.createCell(11)
reportYearCell.setCellValue( reportYearCell.setCellValue(
"年份:${year?.takeIf { it.isNotBlank() && it != "All" } ?: "All"}"
UiText.t("年份:", "Year: ") + (year?.takeIf { it.isNotBlank() && it != "All" } ?: "All")
) )
reportYearCell.cellStyle = infoStyle reportYearCell.cellStyle = infoStyle


@@ -285,9 +287,9 @@ class StockItemConsumptionTrendReportController(
rangeRow.heightInPoints = 20f rangeRow.heightInPoints = 20f
val rangeCell = rangeRow.createCell(0) val rangeCell = rangeRow.createCell(0)
val rangeText = buildString { val rangeText = buildString {
append("材料消耗日期:")
append(UiText.t("材料消耗日期:", "Consumption date: "))
append(lastOutDateStart ?: "") append(lastOutDateStart ?: "")
append(" 至 ")
append(UiText.t(" 至 ", " to "))
append(lastOutDateEnd ?: "") append(lastOutDateEnd ?: "")
} }
rangeCell.setCellValue(rangeText) rangeCell.setCellValue(rangeText)
@@ -296,22 +298,22 @@ class StockItemConsumptionTrendReportController(


// Column headers // Column headers
val headers = listOf( val headers = listOf(
"貨品編號",
"貨品名稱",
"單位",
"一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月",
"總和"
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("單位", "UOM"),
UiText.t("一月", "Jan"),
UiText.t("二月", "Feb"),
UiText.t("三月", "Mar"),
UiText.t("四月", "Apr"),
UiText.t("五月", "May"),
UiText.t("六月", "Jun"),
UiText.t("七月", "Jul"),
UiText.t("八月", "Aug"),
UiText.t("九月", "Sep"),
UiText.t("十月", "Oct"),
UiText.t("十一月", "Nov"),
UiText.t("十二月", "Dec"),
UiText.t("總和", "Total")
) )


rowIndex++ // spacer row rowIndex++ // spacer row
@@ -371,15 +373,15 @@ class StockItemConsumptionTrendReportController(
"qtyJul", "qtyAug", "qtySep", "qtyOct", "qtyNov", "qtyDec", "qtyJul", "qtyAug", "qtySep", "qtyOct", "qtyNov", "qtyDec",
) )
val monthLabels = listOf( val monthLabels = listOf(
"一月", "二月", "三月", "四月", "五月", "六月",
"七月", "八月", "九月", "十月", "十一月", "十二月",
UiText.t("一月", "Jan"), UiText.t("二月", "Feb"), UiText.t("三月", "Mar"), UiText.t("四月", "Apr"), UiText.t("五月", "May"), UiText.t("六月", "Jun"),
UiText.t("七月", "Jul"), UiText.t("八月", "Aug"), UiText.t("九月", "Sep"), UiText.t("十月", "Oct"), UiText.t("十一月", "Nov"), UiText.t("十二月", "Dec"),
) )


val dataSheetName = WorkbookUtil.createSafeSheetName("圖表數據")
val dataSheetName = WorkbookUtil.createSafeSheetName(UiText.t("圖表數據", "Chart data"))
val dataSheet = workbook.createSheet(dataSheetName) val dataSheet = workbook.createSheet(dataSheetName)


val headerRow = dataSheet.createRow(0) val headerRow = dataSheet.createRow(0)
headerRow.createCell(0).setCellValue("貨品編號")
headerRow.createCell(0).setCellValue(UiText.t("貨品編號", "Item code"))
monthLabels.forEachIndexed { i, label -> monthLabels.forEachIndexed { i, label ->
headerRow.createCell(1 + i).setCellValue(label) headerRow.createCell(1 + i).setCellValue(label)
} }
@@ -394,7 +396,7 @@ class StockItemConsumptionTrendReportController(


val zColIndex = CellReference.convertColStringToIndex("Z") val zColIndex = CellReference.convertColStringToIndex("Z")
val zHeader = dataSheet.getRow(0) ?: dataSheet.createRow(0) val zHeader = dataSheet.getRow(0) ?: dataSheet.createRow(0)
zHeader.createCell(zColIndex).setCellValue("全部")
zHeader.createCell(zColIndex).setCellValue(UiText.t("全部", "All"))
dbData.forEachIndexed { idx, row -> dbData.forEachIndexed { idx, row ->
val r = dataSheet.getRow(1 + idx) ?: dataSheet.createRow(1 + idx) val r = dataSheet.getRow(1 + idx) ?: dataSheet.createRow(1 + idx)
r.createCell(zColIndex).setCellValue(row["itemNo"]?.toString() ?: "") r.createCell(zColIndex).setCellValue(row["itemNo"]?.toString() ?: "")
@@ -403,14 +405,14 @@ class StockItemConsumptionTrendReportController(
val lastDataRow1Based = 1 + dbData.size val lastDataRow1Based = 1 + dbData.size
val zListEnd1Based = 1 + dbData.size val zListEnd1Based = 1 + dbData.size


val chartSheetName = WorkbookUtil.createSafeSheetName("消耗圖表")
val chartSheetName = WorkbookUtil.createSafeSheetName(UiText.t("消耗圖表", "Consumption chart"))
val chartSheet = workbook.createSheet(chartSheetName) val chartSheet = workbook.createSheet(chartSheetName)


val labelR = chartSheet.createRow(0) val labelR = chartSheet.createRow(0)
labelR.createCell(0).setCellValue("選擇貨品編號")
labelR.createCell(0).setCellValue(UiText.t("選擇貨品編號", "Select item code"))
val filterCell = labelR.createCell(1) val filterCell = labelR.createCell(1)
val defaultItemNo = dbData.firstOrNull()?.get("itemNo")?.toString()?.trim() val defaultItemNo = dbData.firstOrNull()?.get("itemNo")?.toString()?.trim()
filterCell.setCellValue(defaultItemNo?.takeIf { it.isNotBlank() } ?: "全部")
filterCell.setCellValue(defaultItemNo?.takeIf { it.isNotBlank() } ?: UiText.t("全部", "All"))


val dvHelper: DataValidationHelper = chartSheet.dataValidationHelper val dvHelper: DataValidationHelper = chartSheet.dataValidationHelper
val listFormula = "'$dataSheetName'!\$Z\$1:\$Z\$$zListEnd1Based" val listFormula = "'$dataSheetName'!\$Z\$1:\$Z\$$zListEnd1Based"
@@ -418,9 +420,9 @@ class StockItemConsumptionTrendReportController(
val regions = CellRangeAddressList(0, 0, 1, 1) val regions = CellRangeAddressList(0, 0, 1, 1)
val validation = dvHelper.createValidation(constraint, regions) val validation = dvHelper.createValidation(constraint, regions)
validation.showErrorBox = true validation.showErrorBox = true
validation.createErrorBox("無效選擇", "請從清單中選擇貨品編號或「全部」。")
validation.createErrorBox(UiText.t("無效選擇", "Invalid choice"), UiText.t("請從清單中選擇貨品編號或「全部」。", "Choose an item code from the list, or All."))
validation.showPromptBox = true validation.showPromptBox = true
validation.createPromptBox("篩選", "選擇貨品編號檢視該品項各月消耗數量;選擇「全部」顯示所有品項加總。")
validation.createPromptBox(UiText.t("篩選", "Filter"), UiText.t("選擇貨品編號檢視該品項各月消耗數量;選擇「全部」顯示所有品項加總。", "Select an item code to see monthly consumption, or All for the total of every item."))
chartSheet.addValidationData(validation) chartSheet.addValidationData(validation)


val catRowIndex = 3 val catRowIndex = 3
@@ -437,27 +439,27 @@ class StockItemConsumptionTrendReportController(
val formula = if (lastDataRow1Based < 2) { val formula = if (lastDataRow1Based < 2) {
"0" "0"
} else { } else {
"IF(TRIM(\$B\$1)=\"全部\",SUM('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based),IFERROR(INDEX('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based,MATCH(TRIM(\$B\$1),'$dataSheetName'!\$A\$2:\$A\$$lastDataRow1Based,0)),0))"
"IF(TRIM(\$B\$1)=\"${UiText.t("全部", "All")}\",SUM('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based),IFERROR(INDEX('$dataSheetName'!$colLetter\$2:$colLetter\$$lastDataRow1Based,MATCH(TRIM(\$B\$1),'$dataSheetName'!\$A\$2:\$A\$$lastDataRow1Based,0)),0))"
} }
valRow.createCell(firstMonthCol + i).setCellFormula(formula) valRow.createCell(firstMonthCol + i).setCellFormula(formula)
} }


catRow.createCell(lastMonthCol + 1).setCellValue("總和")
catRow.createCell(lastMonthCol + 1).setCellValue(UiText.t("總和", "Total"))
valRow.createCell(lastMonthCol + 1).setCellFormula("SUM(B5:M5)") valRow.createCell(lastMonthCol + 1).setCellFormula("SUM(B5:M5)")


val drawing = chartSheet.createDrawingPatriarch() val drawing = chartSheet.createDrawingPatriarch()
val anchor = XSSFClientAnchor(0, 0, 0, 0, 1, 6, 14, 28) val anchor = XSSFClientAnchor(0, 0, 0, 0, 1, 6, 14, 28)
val chart = drawing.createChart(anchor) val chart = drawing.createChart(anchor)
chart.setTitleText("各月消耗數量(依選擇之貨品編號)")
chart.setTitleText(UiText.t("各月消耗數量(依選擇之貨品編號)", "Monthly consumption quantity (selected item)"))
chart.setTitleOverlay(false) chart.setTitleOverlay(false)


val legend = chart.getOrAddLegend() val legend = chart.getOrAddLegend()
legend.position = LegendPosition.BOTTOM legend.position = LegendPosition.BOTTOM


val bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM) val bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM)
bottomAxis.setTitle("月份")
bottomAxis.setTitle(UiText.t("月份", "Month"))
val leftAxis = chart.createValueAxis(AxisPosition.LEFT) val leftAxis = chart.createValueAxis(AxisPosition.LEFT)
leftAxis.setTitle("消耗數量")
leftAxis.setTitle(UiText.t("消耗數量", "Consumption qty"))


val catRangeAddr = CellRangeAddress(catRowIndex, catRowIndex, firstMonthCol, lastMonthCol) val catRangeAddr = CellRangeAddress(catRowIndex, catRowIndex, firstMonthCol, lastMonthCol)
val valRangeAddr = CellRangeAddress(valRowIndex, valRowIndex, firstMonthCol, lastMonthCol) val valRangeAddr = CellRangeAddress(valRowIndex, valRowIndex, firstMonthCol, lastMonthCol)
@@ -467,7 +469,7 @@ class StockItemConsumptionTrendReportController(
val barData = chart.createData(ChartTypes.BAR, bottomAxis, leftAxis) as XDDFBarChartData val barData = chart.createData(ChartTypes.BAR, bottomAxis, leftAxis) as XDDFBarChartData
barData.barDirection = BarDirection.COL barData.barDirection = BarDirection.COL
val series = barData.addSeries(categories, values) val series = barData.addSeries(categories, values)
series.setTitle("消耗數量", null)
series.setTitle(UiText.t("消耗數量", "Consumption qty"), null)
chart.plot(barData) chart.plot(barData)


chartSheet.setColumnWidth(0, 18 * 256) chartSheet.setColumnWidth(0, 18 * 256)


+ 11
- 9
src/main/java/com/ffii/fpsms/modules/report/web/StockLedgerReportController.kt Ver ficheiro

@@ -1,4 +1,6 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web

import com.ffii.core.utils.UiText
import org.springframework.web.bind.annotation.* import org.springframework.web.bind.annotation.*
import org.springframework.http.* import org.springframework.http.*
import java.time.LocalDate import java.time.LocalDate
@@ -324,14 +326,14 @@ class StockLedgerReportController(
workbook.setCompressTempFiles(true) workbook.setCompressTempFiles(true)
try { try {
val styles = createStyles(workbook) val styles = createStyles(workbook)
val reportTitle = "庫存明細報告"
val reportTitle = UiText.t("庫存明細報告", "Stock ledger report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))


val headers = listOf( val headers = listOf(
"貨品編號", "貨品名稱", "單位",
"出入賬日期", "類型", "批號", "到期日",
"纍計期初存量", "入庫", "出庫", "纍計存量",
"參考編號", "存貨位置",
UiText.t("貨品編號", "Item code"), UiText.t("貨品名稱", "Item name"), UiText.t("單位", "UOM"),
UiText.t("出入賬日期", "Ledger date"), UiText.t("類型", "Type"), UiText.t("批號", "Lot no."), UiText.t("到期日", "Expiry date"),
UiText.t("纍計期初存量", "Opening balance"), UiText.t("入庫", "Stock in"), UiText.t("出庫", "Stock out"), UiText.t("纍計存量", "Cumulative balance"),
UiText.t("參考編號", "Reference no."), UiText.t("存貨位置", "Stock location"),
) )
val totalColumns = headers.size val totalColumns = headers.size
var rowIndex = 0 var rowIndex = 0
@@ -350,12 +352,12 @@ class StockLedgerReportController(
")" ")"
val subtitleRow = sheet.createRow(rowIndex++) val subtitleRow = sheet.createRow(rowIndex++)
subtitleRow.createCell(0).apply { subtitleRow.createCell(0).apply {
setCellValue("報告日期:$reportDateTime")
setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime)
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 4)) sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 4))
subtitleRow.createCell(5).apply { subtitleRow.createCell(5).apply {
setCellValue("報告期間:${reportPeriodStart.trim()} 至 ${reportPeriodEnd.trim()}")
setCellValue(UiText.t("報告期間:", "Report period: ") + (reportPeriodStart.trim()) + UiText.t(" 至 ", " to ") + (reportPeriodEnd.trim()))
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 5, totalColumns - 1)) sheet.addMergedRegion(CellRangeAddress(1, 1, 5, totalColumns - 1))
@@ -385,7 +387,7 @@ class StockLedgerReportController(
for (c in 3 until totalColumns) { for (c in 3 until totalColumns) {
r.createCell(c).apply { setCellValue(""); cellStyle = styles.sumEmpty } r.createCell(c).apply { setCellValue(""); cellStyle = styles.sumEmpty }
} }
r.getCell(7).apply { setCellValue("貨品總量:"); cellStyle = styles.sumLabel }
r.getCell(7).apply { setCellValue(UiText.t("貨品總量:", "Total qty: ")); cellStyle = styles.sumLabel }
setIntCellFromFormatted(r, 8, totalIn, styles.sumQty, styles.dash) setIntCellFromFormatted(r, 8, totalIn, styles.sumQty, styles.dash)
setIntCellFromFormatted(r, 9, totalOut, styles.sumQty, styles.dash) setIntCellFromFormatted(r, 9, totalOut, styles.sumQty, styles.dash)
setIntCellFromFormatted(r, 10, totalBal, styles.sumQty, styles.dash) setIntCellFromFormatted(r, 10, totalBal, styles.sumQty, styles.dash)
@@ -425,7 +427,7 @@ class StockLedgerReportController(
setTextCell(r, 2, uom, styles.center) setTextCell(r, 2, uom, styles.center)
setTextCell(r, 3, m["trnDate"], styles.center) setTextCell(r, 3, m["trnDate"], styles.center)
val typeText = m["trnRefNo"]?.toString()?.trim().orEmpty().let { t -> val typeText = m["trnRefNo"]?.toString()?.trim().orEmpty().let { t ->
if (t.equals("Expiry", ignoreCase = true)) "過期" else t
if (t.equals("Expiry", ignoreCase = true)) UiText.t("過期", "Expired") else t
} }
setTextCell(r, 4, typeText, styles.center) setTextCell(r, 4, typeText, styles.center)
setTextCell(r, 5, m["lotNo"], styles.text) setTextCell(r, 5, m["lotNo"], styles.text)


+ 21
- 19
src/main/java/com/ffii/fpsms/modules/report/web/StockLotOnhandReportController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.StockLotOnhandReportService import com.ffii.fpsms.modules.report.service.StockLotOnhandReportService
import org.apache.poi.ss.usermodel.BorderStyle import org.apache.poi.ss.usermodel.BorderStyle
import org.apache.poi.ss.usermodel.CellStyle import org.apache.poi.ss.usermodel.CellStyle
@@ -186,8 +188,8 @@ class StockLotOnhandReportController(


private fun displayFilter(raw: String?): String { private fun displayFilter(raw: String?): String {
val v = raw?.trim().orEmpty() val v = raw?.trim().orEmpty()
if (v.isEmpty() || v.equals("All", ignoreCase = true)) return "全部"
if (v.equals("other", ignoreCase = true)) return "其他"
if (v.isEmpty() || v.equals("All", ignoreCase = true)) return UiText.t("全部", "All")
if (v.equals("other", ignoreCase = true)) return UiText.t("其他", "Other")
return v return v
} }


@@ -208,14 +210,14 @@ class StockLotOnhandReportController(
workbook.setCompressTempFiles(true) workbook.setCompressTempFiles(true)
try { try {
val styles = createStyles(workbook) val styles = createStyles(workbook)
val reportTitle = "庫存批次現況報告"
val reportTitle = UiText.t("庫存批次現況報告", "Lot on-hand report")
val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle))
val headers = listOf( val headers = listOf(
"貨品編號", "貨品名稱", "貨品單位結餘", "單位",
"批號", "到期日",
"樓層", "倉庫", "區域", "儲位",
"最後異動日", "最後異動(入庫/出庫)",
"批號結餘", "單位均價", "庫存總價值",
UiText.t("貨品編號", "Item code"), UiText.t("貨品名稱", "Item name"), UiText.t("貨品單位結餘", "Item balance"), UiText.t("單位", "UOM"),
UiText.t("批號", "Lot no."), UiText.t("到期日", "Expiry date"),
UiText.t("樓層", "Floor"), UiText.t("倉庫", "Warehouse"), UiText.t("區域", "Area"), UiText.t("儲位", "Slot"),
UiText.t("最後異動日", "Last movement date"), UiText.t("最後異動(入庫/出庫)", "Last movement (in/out)"),
UiText.t("批號結餘", "Lot balance"), UiText.t("單位均價", "Avg unit price"), UiText.t("庫存總價值", "Total stock value"),
) )
val totalColumns = headers.size val totalColumns = headers.size
var rowIndex = 0 var rowIndex = 0
@@ -236,25 +238,25 @@ class StockLotOnhandReportController(
val dateRow = sheet.createRow(rowIndex++) val dateRow = sheet.createRow(rowIndex++)
dateRow.heightInPoints = 18f dateRow.heightInPoints = 18f
dateRow.createCell(0).apply { dateRow.createCell(0).apply {
setCellValue("報告日期(現況):$reportDateTime")
setCellValue(UiText.t("報告日期(現況):", "Report date (as of): ") + reportDateTime)
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, totalColumns - 1)) sheet.addMergedRegion(CellRangeAddress(1, 1, 0, totalColumns - 1))


val criteriaText = listOf( val criteriaText = listOf(
"貨品編號=${displayFilter(itemCode)}",
"樓層=${displayFilter(storeId)}",
"倉庫=${displayFilter(warehouse)}",
"區域=${displayFilter(area)}",
"儲位=${displayFilter(slot)}",
"盤點區域說明=${displayFilter(stockTakeSectionDescription)}",
"批號=${displayFilter(lotNo)}",
"來源=${displayFilter(lotOrigin)}",
UiText.t("貨品編號=", "Item code=") + (displayFilter(itemCode)),
UiText.t("樓層=", "Floor=") + (displayFilter(storeId)),
UiText.t("倉庫=", "Warehouse=") + (displayFilter(warehouse)),
UiText.t("區域=", "Area=") + (displayFilter(area)),
UiText.t("儲位=", "Slot=") + (displayFilter(slot)),
UiText.t("盤點區域說明=", "Count section=") + (displayFilter(stockTakeSectionDescription)),
UiText.t("批號=", "Lot no.=") + (displayFilter(lotNo)),
UiText.t("來源=", "Origin=") + (displayFilter(lotOrigin)),
).joinToString(" ") ).joinToString(" ")
val criteriaRow = sheet.createRow(rowIndex++) val criteriaRow = sheet.createRow(rowIndex++)
criteriaRow.heightInPoints = 32f criteriaRow.heightInPoints = 32f
criteriaRow.createCell(0).apply { criteriaRow.createCell(0).apply {
setCellValue("搜尋條件:$criteriaText")
setCellValue(UiText.t("搜尋條件:", "Filters: ") + criteriaText)
cellStyle = styles.subtitle cellStyle = styles.subtitle
} }
sheet.addMergedRegion(CellRangeAddress(2, 2, 0, totalColumns - 1)) sheet.addMergedRegion(CellRangeAddress(2, 2, 0, totalColumns - 1))
@@ -274,7 +276,7 @@ class StockLotOnhandReportController(
val r = sheet.createRow(rowIndex++) val r = sheet.createRow(rowIndex++)
r.heightInPoints = 22f r.heightInPoints = 22f
r.createCell(0).apply { r.createCell(0).apply {
setCellValue("查無資料")
setCellValue(UiText.t("查無資料", "No data"))
cellStyle = styles.center cellStyle = styles.center
} }
for (c in 1 until totalColumns) { for (c in 1 until totalColumns) {


+ 22
- 20
src/main/java/com/ffii/fpsms/modules/report/web/StockTakeVarianceReportController.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.report.web package com.ffii.fpsms.modules.report.web


import com.ffii.core.utils.UiText

import com.ffii.fpsms.modules.report.service.ReportService import com.ffii.fpsms.modules.report.service.ReportService
import com.ffii.fpsms.modules.report.service.StockTakeVarianceReportService import com.ffii.fpsms.modules.report.service.StockTakeVarianceReportService
import org.apache.poi.ss.usermodel.BorderStyle import org.apache.poi.ss.usermodel.BorderStyle
@@ -240,7 +242,7 @@ class StockTakeVarianceReportController(


val s = stockTakeDateStart?.trim().orEmpty() val s = stockTakeDateStart?.trim().orEmpty()
val e = stockTakeDateEnd?.trim().orEmpty() val e = stockTakeDateEnd?.trim().orEmpty()
return if (s.isEmpty() && e.isEmpty()) "" else "$s 至 $e"
return if (s.isEmpty() && e.isEmpty()) "" else s + UiText.t(" 至 ", " to ") + e
} }


private fun createStockTakeVarianceExcel( private fun createStockTakeVarianceExcel(
@@ -248,23 +250,23 @@ class StockTakeVarianceReportController(
stockTakeCaption: String, stockTakeCaption: String,
): ByteArray { ): ByteArray {
val workbook = XSSFWorkbook() val workbook = XSSFWorkbook()
val reportTitle = "庫存盤點報告"
val reportTitle = UiText.t("庫存盤點報告", "Stock take report")
val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle) val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle)
val sheet = workbook.createSheet(safeSheetName) val sheet = workbook.createSheet(safeSheetName)


val headers = listOf( val headers = listOf(
"貨品編號",
"貨品名稱",
"單位",
"批號",
"到期日",
"存貨位置",
"盤點前存量",
"盤點數",
"盤盈虧",
"盤盈虧百分比",
"類型",
"審核時間",
UiText.t("貨品編號", "Item code"),
UiText.t("貨品名稱", "Item name"),
UiText.t("單位", "UOM"),
UiText.t("批號", "Lot no."),
UiText.t("到期日", "Expiry date"),
UiText.t("存貨位置", "Stock location"),
UiText.t("盤點前存量", "Qty before count"),
UiText.t("盤點數", "Counted qty"),
UiText.t("盤盈虧", "Variance"),
UiText.t("盤盈虧百分比", "Variance %"),
UiText.t("類型", "Type"),
UiText.t("審核時間", "Approved at"),
) )
val totalColumns = headers.size val totalColumns = headers.size
var rowIndex = 0 var rowIndex = 0
@@ -400,12 +402,12 @@ class StockTakeVarianceReportController(
")" ")"
val subtitleRow = sheet.createRow(rowIndex++) val subtitleRow = sheet.createRow(rowIndex++)
subtitleRow.createCell(0).apply { subtitleRow.createCell(0).apply {
setCellValue("報告日期:$reportDateTime")
setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime)
cellStyle = subtitleStyle cellStyle = subtitleStyle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 2)) sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 2))
subtitleRow.createCell(3).apply { subtitleRow.createCell(3).apply {
setCellValue(if (stockTakeCaption.isBlank()) "" else "盤點日期:$stockTakeCaption")
setCellValue(if (stockTakeCaption.isBlank()) "" else UiText.t("盤點日期:", "Count date: ") + stockTakeCaption)
cellStyle = subtitleStyle cellStyle = subtitleStyle
} }
sheet.addMergedRegion(CellRangeAddress(1, 1, 3, totalColumns - 1)) sheet.addMergedRegion(CellRangeAddress(1, 1, 3, totalColumns - 1))
@@ -450,7 +452,7 @@ class StockTakeVarianceReportController(
val labelCol = 5 val labelCol = 5
val valueCol = 6 val valueCol = 6
r.getCell(labelCol).apply { r.getCell(labelCol).apply {
setCellValue("貨品總量:")
setCellValue(UiText.t("貨品總量:", "Total qty: "))
cellStyle = summaryLabelThickBottomStyle cellStyle = summaryLabelThickBottomStyle
} }
r.getCell(valueCol).apply { r.getCell(valueCol).apply {
@@ -616,7 +618,7 @@ class StockTakeVarianceReportController(
if (useLegacyOverall) { if (useLegacyOverall) {
return Rep012ReportData( return Rep012ReportData(
caption = stockTakeVarianceReportService.getStockTakeVarianceOverallCaption(), caption = stockTakeVarianceReportService.getStockTakeVarianceOverallCaption(),
conditionLabel = "盤點條件:",
conditionLabel = UiText.t("盤點條件:", "Count filter: "),
dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2Overall( dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2Overall(
itemCode = itemCode, itemCode = itemCode,
storeId = storeId, storeId = storeId,
@@ -629,7 +631,7 @@ class StockTakeVarianceReportController(
val id = roundIds.first() val id = roundIds.first()
return Rep012ReportData( return Rep012ReportData(
caption = stockTakeVarianceReportService.getStockTakeRoundCaption(id), caption = stockTakeVarianceReportService.getStockTakeRoundCaption(id),
conditionLabel = "盤點輪次:",
conditionLabel = UiText.t("盤點輪次:", "Round: "),
dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2( dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2(
stockTakeRoundId = id, stockTakeRoundId = id,
itemCode = itemCode, itemCode = itemCode,
@@ -642,7 +644,7 @@ class StockTakeVarianceReportController(


return Rep012ReportData( return Rep012ReportData(
caption = stockTakeVarianceReportService.getStockTakeVarianceMultiRoundCaption(roundIds), caption = stockTakeVarianceReportService.getStockTakeVarianceMultiRoundCaption(roundIds),
conditionLabel = "盤點條件:",
conditionLabel = UiText.t("盤點條件:", "Count filter: "),
dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2Overall( dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2Overall(
itemCode = itemCode, itemCode = itemCode,
storeId = storeId, storeId = storeId,


+ 3
- 1
src/main/java/com/ffii/fpsms/modules/stock/service/StockInLineService.kt Ver ficheiro

@@ -1,5 +1,7 @@
package com.ffii.fpsms.modules.stock.service package com.ffii.fpsms.modules.stock.service


import com.ffii.core.utils.UiText

import com.ffii.core.exception.BadRequestException import com.ffii.core.exception.BadRequestException
import com.ffii.core.support.AbstractBaseEntityService import com.ffii.core.support.AbstractBaseEntityService
import com.ffii.core.support.JdbcDao import com.ffii.core.support.JdbcDao
@@ -1249,7 +1251,7 @@ open class StockInLineService(
val poLabel = JasperCompileManager.compileReport(inputStream) val poLabel = JasperCompileManager.compileReport(inputStream)
val qrCodeInfo = stockInLineRepository.findStockInLineInfoByIdInAndDeletedFalse(request.stockInLineIds).toMutableList() val qrCodeInfo = stockInLineRepository.findStockInLineInfoByIdInAndDeletedFalse(request.stockInLineIds).toMutableList()
if (qrCodeInfo.isEmpty()) { if (qrCodeInfo.isEmpty()) {
throw IllegalArgumentException("找不到來貨記錄,無法產生二維碼")
throw IllegalArgumentException(UiText.t("找不到來貨記錄,無法產生二維碼", "No receipt record was found, so a QR code cannot be created"))
} }
val fields = mutableListOf<MutableMap<String ,Any>>() val fields = mutableListOf<MutableMap<String ,Any>>()




+ 15
- 17
src/main/resources/DeliveryNote/DeliveryNoteCartonLabelsPDF.jrxml Ver ficheiro

@@ -43,7 +43,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{shopPurchaseOrderNo}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{shopPurchaseOrderNo}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="14" y="211" width="112" height="30" uuid="e03fcb92-259c-4427-a68e-60fe5924d763"> <reportElement x="14" y="211" width="112" height="30" uuid="e03fcb92-259c-4427-a68e-60fe5924d763">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -57,10 +57,9 @@
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14"/> <font fontName="微軟正黑體" size="14"/>
</textElement> </textElement>
<text><![CDATA[店鋪採購單編號:
]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r16b426416823}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="14" y="166" width="85" height="45" uuid="f3ffd4ee-0513-41a5-94d7-f1fdb9966a76"> <reportElement x="14" y="166" width="85" height="45" uuid="f3ffd4ee-0513-41a5-94d7-f1fdb9966a76">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
@@ -70,8 +69,8 @@
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14"/> <font fontName="微軟正黑體" size="14"/>
</textElement> </textElement>
<text><![CDATA[送貨單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r1814ca0dcbea}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="99" y="166" width="191" height="45" uuid="4319059b-9096-4c49-8275-287be93d3e6a"> <reportElement x="99" y="166" width="191" height="45" uuid="4319059b-9096-4c49-8275-287be93d3e6a">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -114,7 +113,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{shopName}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{shopName}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="14" y="136" width="55" height="30" uuid="0ccaeebc-681b-449e-b547-97fc86c35662"> <reportElement x="14" y="136" width="55" height="30" uuid="0ccaeebc-681b-449e-b547-97fc86c35662">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -129,9 +128,9 @@
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/> <font fontName="微軟正黑體" size="16"/>
</textElement> </textElement>
<text><![CDATA[箱數:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r26101c67a651}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="170" y="136" width="120" height="30" uuid="05bc180b-a58d-4ad8-95f6-bc3090ee2c2d"> <reportElement x="170" y="136" width="120" height="30" uuid="05bc180b-a58d-4ad8-95f6-bc3090ee2c2d">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -143,8 +142,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/> <font fontName="微軟正黑體" size="16"/>
</textElement> </textElement>
<text><![CDATA[ 箱(蛋類除外)]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r3b9bf196effe}]]></textFieldExpression>
</textField>
<textField isBlankWhenNull="true"> <textField isBlankWhenNull="true">
<reportElement x="69" y="136" width="40" height="30" uuid="dab335a5-e253-498c-a9bf-b9707d8e1099"> <reportElement x="69" y="136" width="40" height="30" uuid="dab335a5-e253-498c-a9bf-b9707d8e1099">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -184,7 +183,7 @@
</textElement> </textElement>
<text><![CDATA[/]]></text> <text><![CDATA[/]]></text>
</staticText> </staticText>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="290" y="136" width="104" height="19" uuid="c8b9fafb-9e8b-479f-9a9f-dadda7854f95"> <reportElement x="290" y="136" width="104" height="19" uuid="c8b9fafb-9e8b-479f-9a9f-dadda7854f95">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -199,9 +198,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14"/> <font fontName="微軟正黑體" size="14"/>
</textElement> </textElement>
<text><![CDATA[車線
]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf9015e9ab095}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont"> <textField textAdjust="ScaleFont">
<reportElement x="290" y="155" width="104" height="86" uuid="57f8e4fa-cea0-42c5-b9e5-a33f0a2710b8"> <reportElement x="290" y="155" width="104" height="86" uuid="57f8e4fa-cea0-42c5-b9e5-a33f0a2710b8">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>


+ 36
- 36
src/main/resources/DeliveryNote/DeliveryNotePDF.jrxml Ver ficheiro

@@ -36,7 +36,7 @@
</title> </title>
<pageHeader> <pageHeader>
<band height="128"> <band height="128">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="430" y="0" width="40" height="18" uuid="3381622a-7eda-4649-88b8-650da96c2a77"> <reportElement x="430" y="0" width="40" height="18" uuid="3381622a-7eda-4649-88b8-650da96c2a77">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -44,8 +44,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="470" y="0" width="20" height="18" uuid="33b3d236-1c13-4751-abf5-79871b2535ea"> <reportElement x="470" y="0" width="20" height="18" uuid="33b3d236-1c13-4751-abf5-79871b2535ea">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -53,7 +53,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="530" y="0" width="25" height="18" uuid="11a0dc53-3742-4c56-a9b2-b284bfe8b07e"> <reportElement x="530" y="0" width="25" height="18" uuid="11a0dc53-3742-4c56-a9b2-b284bfe8b07e">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -61,8 +61,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd04825997b36}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report"> <textField evaluationTime="Report">
<reportElement x="510" y="0" width="20" height="18" uuid="428142d2-39f0-43f1-b662-f1ab72f0aa1a"> <reportElement x="510" y="0" width="20" height="18" uuid="428142d2-39f0-43f1-b662-f1ab72f0aa1a">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -93,7 +93,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{dnTitle}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{dnTitle}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="25" width="70" height="23" uuid="de40ab55-5e3a-4730-b6cc-ddb4272edd6d"> <reportElement x="0" y="25" width="70" height="23" uuid="de40ab55-5e3a-4730-b6cc-ddb4272edd6d">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -101,8 +101,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle" markup="styled"> <textElement textAlignment="Left" verticalAlignment="Middle" markup="styled">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[店鋪:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rc54be4c935e7}]]></textFieldExpression>
</textField>
<textField textAdjust="StretchHeight"> <textField textAdjust="StretchHeight">
<reportElement x="70" y="25" width="300" height="23" uuid="abe02be5-6047-4dd1-9637-f21612d9040a"> <reportElement x="70" y="25" width="300" height="23" uuid="abe02be5-6047-4dd1-9637-f21612d9040a">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -112,15 +112,15 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{shopName}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{shopName}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement positionType="Float" x="0" y="50" width="80" height="23" uuid="1802947d-3ddb-4c51-99ab-82dda9119e34"> <reportElement positionType="Float" x="0" y="50" width="80" height="23" uuid="1802947d-3ddb-4c51-99ab-82dda9119e34">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
</reportElement> </reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="false"/> <font fontName="微軟正黑體" size="16" isBold="false"/>
</textElement> </textElement>
<text><![CDATA[地址:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r3d589b9b7f8a}]]></textFieldExpression>
</textField>
<textField textAdjust="StretchHeight"> <textField textAdjust="StretchHeight">
<reportElement positionType="Float" x="70" y="50" width="465" height="23" uuid="89e79bce-bd39-48e6-b114-c11b4bcc5c9f"/> <reportElement positionType="Float" x="70" y="50" width="465" height="23" uuid="89e79bce-bd39-48e6-b114-c11b4bcc5c9f"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
@@ -128,15 +128,15 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{shopAddress}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{shopAddress}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="370" y="25" width="70" height="23" uuid="a8be367e-c33a-4876-bb0e-14c2eea6bca0"> <reportElement x="370" y="25" width="70" height="23" uuid="a8be367e-c33a-4876-bb0e-14c2eea6bca0">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
</reportElement> </reportElement>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[貨車:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd2ec8aa96e7a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont"> <textField textAdjust="ScaleFont">
<reportElement x="440" y="25" width="95" height="23" uuid="2a73f702-dda6-4abf-90b3-14704f6d3c7b"> <reportElement x="440" y="25" width="95" height="23" uuid="2a73f702-dda6-4abf-90b3-14704f6d3c7b">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
@@ -151,7 +151,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement positionType="Float" x="5" y="90" width="64" height="18" uuid="329c1490-958e-4884-a36f-cdb0867162c3"> <reportElement positionType="Float" x="5" y="90" width="64" height="18" uuid="329c1490-958e-4884-a36f-cdb0867162c3">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -159,9 +159,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[送貨日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{raddfcfcdc60e}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement positionType="Float" x="5" y="110" width="110" height="18" uuid="111c5f73-f543-4006-931b-27479ccca816"> <reportElement positionType="Float" x="5" y="110" width="110" height="18" uuid="111c5f73-f543-4006-931b-27479ccca816">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -169,8 +169,8 @@
<textElement textAlignment="Left" verticalAlignment="Top"> <textElement textAlignment="Left" verticalAlignment="Top">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[店鋪採購單號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r65116ebb128b}]]></textFieldExpression>
</textField>
<textField textAdjust="StretchHeight"> <textField textAdjust="StretchHeight">
<reportElement positionType="Float" x="115" y="110" width="425" height="18" uuid="7171ba0b-1a78-4ff6-a765-7b2b543ab0bc"> <reportElement positionType="Float" x="115" y="110" width="425" height="18" uuid="7171ba0b-1a78-4ff6-a765-7b2b543ab0bc">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -241,7 +241,7 @@
</pageHeader> </pageHeader>
<columnHeader> <columnHeader>
<band height="33"> <band height="33">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="5" width="40" height="18" uuid="d0d76c93-d260-4b03-b116-6e7ba1fdbdd8"> <reportElement x="0" y="5" width="40" height="18" uuid="d0d76c93-d260-4b03-b116-6e7ba1fdbdd8">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -250,9 +250,9 @@
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[序號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rab715e1b98f0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="40" y="5" width="110" height="18" uuid="58a5c922-fd98-4997-9b17-16bdf9f78519"> <reportElement x="40" y="5" width="110" height="18" uuid="58a5c922-fd98-4997-9b17-16bdf9f78519">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -261,9 +261,9 @@
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[路綫]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r95d67f026a0c}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="150" y="5" width="80" height="18" uuid="65c27cc0-f806-4930-930c-6b3fd632a52f"> <reportElement x="150" y="5" width="80" height="18" uuid="65c27cc0-f806-4930-930c-6b3fd632a52f">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -271,9 +271,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7f693b56a6ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="5" width="240" height="18" uuid="fa7ba1d5-003a-4c99-8a2f-4162756ee515"> <reportElement x="230" y="5" width="240" height="18" uuid="fa7ba1d5-003a-4c99-8a2f-4162756ee515">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -281,8 +281,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="28" width="554" height="1" uuid="76648c53-0490-4e52-b737-a8075d9c654f"> <reportElement x="0" y="28" width="554" height="1" uuid="76648c53-0490-4e52-b737-a8075d9c654f">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -386,7 +386,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{signOff}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{signOff}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="18" width="40" height="18" uuid="c47819b4-0cf1-40f6-99bf-798a3afe836b"> <reportElement x="0" y="18" width="40" height="18" uuid="c47819b4-0cf1-40f6-99bf-798a3afe836b">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -394,8 +394,8 @@
<textElement textAlignment="Left" verticalAlignment="Top"> <textElement textAlignment="Left" verticalAlignment="Top">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[單號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r4dc2870c059c}]]></textFieldExpression>
</textField>
</band> </band>
</detail> </detail>
<pageFooter> <pageFooter>


+ 22
- 22
src/main/resources/DeliveryNote/TruckRoutingSummaryPDF.jrxml Ver ficheiro

@@ -24,19 +24,19 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="18" isBold="true"/> <font fontName="微軟正黑體" size="18" isBold="true"/>
</textElement> </textElement>
<textFieldExpression><![CDATA["送貨路線摘要(" + $P{TRUCK_ROUTE} + ")"]]></textFieldExpression>
<textFieldExpression><![CDATA[$R{r00c45eb6d637} + $P{TRUCK_ROUTE} + $R{rfa354ca634f3}]]></textFieldExpression>
</textField> </textField>
</band> </band>
</title> </title>
<pageHeader> <pageHeader>
<band height="27"> <band height="27">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="0" width="130" height="22" uuid="9d3f5b73-ceaa-4653-909f-e8534d19c61e"/> <reportElement x="0" y="0" width="130" height="22" uuid="9d3f5b73-ceaa-4653-909f-e8534d19c61e"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/> <font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[計劃車次出發時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rc23e5226dd29}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="130" y="0" width="90" height="22" uuid="92335393-c410-4935-bd28-29a6175a9769"/> <reportElement x="130" y="0" width="90" height="22" uuid="92335393-c410-4935-bd28-29a6175a9769"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
@@ -44,13 +44,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{DEPARTURE_TIME}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{DEPARTURE_TIME}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="430" y="0" width="45" height="22" uuid="8770a6e7-8a03-47ab-aa3c-00f02815d3b4"/> <reportElement x="430" y="0" width="45" height="22" uuid="8770a6e7-8a03-47ab-aa3c-00f02815d3b4"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/> <font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rb2778afe0187}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="475" y="0" width="80" height="22" uuid="1a628742-c50c-47a8-9f3d-df91dbc4b184"/> <reportElement x="475" y="0" width="80" height="22" uuid="1a628742-c50c-47a8-9f3d-df91dbc4b184"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -65,34 +65,34 @@
</pageHeader> </pageHeader>
<columnHeader> <columnHeader>
<band height="28"> <band height="28">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="4" width="60" height="20" uuid="7dbf4192-d9d9-4f3e-95bc-d2700d4e5798"/> <reportElement x="0" y="4" width="60" height="20" uuid="7dbf4192-d9d9-4f3e-95bc-d2700d4e5798"/>
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/> <font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[卸貨順序]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r8d4f15f17db3}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="70" y="4" width="60" height="20" uuid="9c31b1d9-d866-4555-9ee9-57b924ff2540"/> <reportElement x="70" y="4" width="60" height="20" uuid="9c31b1d9-d866-4555-9ee9-57b924ff2540"/>
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/> <font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[店鋪代碼]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3dd6f613acd0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="140" y="4" width="380" height="20" uuid="e7d49961-b1c8-40b0-a109-29da1142fc8d"/> <reportElement x="140" y="4" width="380" height="20" uuid="e7d49961-b1c8-40b0-a109-29da1142fc8d"/>
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/> <font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[店鋪名稱 & 地址]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r16d3eb3cba57}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="520" y="4" width="35" height="20" uuid="8473f6ea-a5bd-4739-bc05-618c0afb06d2"/> <reportElement x="520" y="4" width="35" height="20" uuid="8473f6ea-a5bd-4739-bc05-618c0afb06d2"/>
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="14" isBold="true"/> <font fontName="微軟正黑體" size="14" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[箱數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r0eec66363def}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="27" width="555" height="1" uuid="a370b2d2-4853-460a-900a-a15d2e1b8e94"/> <reportElement x="0" y="27" width="555" height="1" uuid="a370b2d2-4853-460a-900a-a15d2e1b8e94"/>
</line> </line>
@@ -127,9 +127,9 @@
<textElement verticalAlignment="Top"> <textElement verticalAlignment="Top">
<font fontName="微軟正黑體" size="14"/> <font fontName="微軟正黑體" size="14"/>
</textElement> </textElement>
<textFieldExpression><![CDATA[(($F{shopName} == null || $F{shopName}.trim().isEmpty()) ? "" : ("店鋪:" + $F{shopName}.trim()))
<textFieldExpression><![CDATA[(($F{shopName} == null || $F{shopName}.trim().isEmpty()) ? "" : ($R{rc54be4c935e7} + $F{shopName}.trim()))
+ (($F{address} == null || $F{address}.trim().isEmpty()) ? "" : ( + (($F{address} == null || $F{address}.trim().isEmpty()) ? "" : (
(($F{shopName} == null || $F{shopName}.trim().isEmpty()) ? "" : "\n") + "地址:" + $F{address}.trim()
(($F{shopName} == null || $F{shopName}.trim().isEmpty()) ? "" : "\n") + $R{r3d589b9b7f8a} + $F{address}.trim()
))]]></textFieldExpression> ))]]></textFieldExpression>
</textField> </textField>
<textField isBlankWhenNull="true"> <textField isBlankWhenNull="true">
@@ -151,7 +151,7 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="9"/> <font fontName="微軟正黑體" size="9"/>
</textElement> </textElement>
<textFieldExpression><![CDATA["第 " + $V{PAGE_NUMBER} + " 頁"]]></textFieldExpression>
<textFieldExpression><![CDATA[$R{rf495347d6acf} + $V{PAGE_NUMBER} + $R{r080fcc65b244}]]></textFieldExpression>
</textField> </textField>
</band> </band>
</pageFooter> </pageFooter>


+ 15
- 19
src/main/resources/FGStockInLabel/FGStockInLabel.jrxml Ver ficheiro

@@ -30,7 +30,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{productionDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{productionDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="172" width="80" height="30" uuid="e03fcb92-259c-4427-a68e-60fe5924d763"> <reportElement x="0" y="172" width="80" height="30" uuid="e03fcb92-259c-4427-a68e-60fe5924d763">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -38,9 +38,8 @@
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/> <font fontName="微軟正黑體" size="16"/>
</textElement> </textElement>
<text><![CDATA[生產日期:
]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{raeb34e99d155}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont"> <textField textAdjust="ScaleFont">
<reportElement x="80" y="50" width="160" height="30" uuid="9a440925-1bd4-4001-9b4b-7163ac27551e"> <reportElement x="80" y="50" width="160" height="30" uuid="9a440925-1bd4-4001-9b4b-7163ac27551e">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -51,7 +50,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{jobOrderCode}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{jobOrderCode}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="80" width="80" height="30" uuid="c8b9fafb-9e8b-479f-9a9f-dadda7854f95"> <reportElement x="0" y="80" width="80" height="30" uuid="c8b9fafb-9e8b-479f-9a9f-dadda7854f95">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -59,9 +58,8 @@
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/> <font fontName="微軟正黑體" size="16"/>
</textElement> </textElement>
<text><![CDATA[批次編號:
]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rff67331bff3b}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="80" y="110" width="160" height="30" uuid="57f8e4fa-cea0-42c5-b9e5-a33f0a2710b8"> <reportElement x="80" y="110" width="160" height="30" uuid="57f8e4fa-cea0-42c5-b9e5-a33f0a2710b8">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -96,7 +94,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{finishedGoodLotNo}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{finishedGoodLotNo}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="202" width="80" height="30" uuid="93d48729-edea-4acf-beca-00c6221c10bb"> <reportElement x="0" y="202" width="80" height="30" uuid="93d48729-edea-4acf-beca-00c6221c10bb">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -104,9 +102,8 @@
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/> <font fontName="微軟正黑體" size="16"/>
</textElement> </textElement>
<text><![CDATA[到期日期:
]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r5f876eb35fb3}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="80" y="202" width="180" height="30" uuid="802555cd-a78b-49c4-b018-61c55f28070c"> <reportElement x="80" y="202" width="180" height="30" uuid="802555cd-a78b-49c4-b018-61c55f28070c">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -117,7 +114,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{expiryDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{expiryDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="50" width="80" height="30" uuid="145bfb84-c448-4fea-840a-c3ab0bcea7f4"> <reportElement x="0" y="50" width="80" height="30" uuid="145bfb84-c448-4fea-840a-c3ab0bcea7f4">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -125,9 +122,9 @@
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/> <font fontName="微軟正黑體" size="16"/>
</textElement> </textElement>
<text><![CDATA[工單編號:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rf03632dd7521}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="110" width="80" height="30" uuid="397d1a94-709b-4372-96ce-bc1c28a8d997"> <reportElement x="0" y="110" width="80" height="30" uuid="397d1a94-709b-4372-96ce-bc1c28a8d997">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -135,9 +132,8 @@
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/> <font fontName="微軟正黑體" size="16"/>
</textElement> </textElement>
<text><![CDATA[數量:
]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{raf1eb6fab37f}]]></textFieldExpression>
</textField>
<image> <image>
<reportElement x="265" y="38" width="115" height="115" uuid="f61ca1c1-333b-42e1-9a00-85f5ef1e3492"> <reportElement x="265" y="38" width="115" height="115" uuid="f61ca1c1-333b-42e1-9a00-85f5ef1e3492">
<property name="com.jaspersoft.studio.unit.x" value="px"/> <property name="com.jaspersoft.studio.unit.x" value="px"/>


+ 44
- 44
src/main/resources/PickRecord/PickRecordPDF.jrxml Ver ficheiro

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.21.3.final using JasperReports Library version 6.21.3-4a3078d20785ebe464f18037d738d12fc98c13cf --> <!-- Created with Jaspersoft Studio version 6.21.3.final using JasperReports Library version 6.21.3-4a3078d20785ebe464f18037d738d12fc98c13cf -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="PickRecordv2" language="javascript" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isTitleNewPage="true" uuid="a037339e-92cf-44fd-9360-64465f285f3c">
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="PickRecordv2" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isTitleNewPage="true" uuid="a037339e-92cf-44fd-9360-64465f285f3c">
<parameter name="JobOrderCode" class="java.lang.String"/> <parameter name="JobOrderCode" class="java.lang.String"/>
<parameter name="FGCode" class="java.lang.String"/> <parameter name="FGCode" class="java.lang.String"/>
<parameter name="unit" class="java.lang.String"/> <parameter name="unit" class="java.lang.String"/>
@@ -25,7 +25,7 @@
</background> </background>
<pageHeader> <pageHeader>
<band height="103" splitType="Stretch"> <band height="103" splitType="Stretch">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="5" y="5" width="70" height="18" uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890"> <reportElement x="5" y="5" width="70" height="18" uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -33,8 +33,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[膠茜數目:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r6850973fd787}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="75" y="5" width="80" height="18" uuid="b2c3d4e5-f6a7-8901-bcde-f12345678901"> <reportElement x="75" y="5" width="80" height="18" uuid="b2c3d4e5-f6a7-8901-bcde-f12345678901">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -52,9 +52,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16"/> <font fontName="微軟正黑體" size="16"/>
</textElement> </textElement>
<textFieldExpression><![CDATA["板頭紙(" + ($P{Floor} == null ? "" : $P{Floor}) + ")"]]></textFieldExpression>
<textFieldExpression><![CDATA[$R{rd62378893466} + ($P{Floor} == null ? "" : $P{Floor}) + $R{rfa354ca634f3}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="535" y="5" width="25" height="18" uuid="178c50a8-90e2-4c80-95f8-7c27dcc5ce02"> <reportElement x="535" y="5" width="25" height="18" uuid="178c50a8-90e2-4c80-95f8-7c27dcc5ce02">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -62,8 +62,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd04825997b36}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report"> <textField evaluationTime="Report">
<reportElement x="515" y="5" width="20" height="18" uuid="9d782ac8-6fd4-4336-abfe-436435476462"> <reportElement x="515" y="5" width="20" height="18" uuid="9d782ac8-6fd4-4336-abfe-436435476462">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -89,7 +89,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="435" y="5" width="40" height="18" uuid="e9a7bc86-91db-4ea2-ae67-89f596f356de"> <reportElement x="435" y="5" width="40" height="18" uuid="e9a7bc86-91db-4ea2-ae67-89f596f356de">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -97,9 +97,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="5" y="35" width="80" height="18" uuid="11b7324d-086a-427b-bd9b-78ca6789f1fa"> <reportElement x="5" y="35" width="80" height="18" uuid="11b7324d-086a-427b-bd9b-78ca6789f1fa">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -107,8 +107,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[工單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf03632dd7521}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="85" y="35" width="150" height="18" uuid="abfe6fd4-11e3-463b-b075-ed6b335e4a97"> <reportElement x="85" y="35" width="150" height="18" uuid="abfe6fd4-11e3-463b-b075-ed6b335e4a97">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -118,7 +118,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{JobOrderCode}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{JobOrderCode}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="5" y="55" width="80" height="18" uuid="17445159-6cfb-46a0-835d-8cdc1585b793"> <reportElement x="5" y="55" width="80" height="18" uuid="17445159-6cfb-46a0-835d-8cdc1585b793">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -126,8 +126,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[成品編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r1620c7944cce}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="85" y="55" width="150" height="18" uuid="c9a7aaad-ef1a-4e42-9c32-794dcf5d8ca9"> <reportElement x="85" y="55" width="150" height="18" uuid="c9a7aaad-ef1a-4e42-9c32-794dcf5d8ca9">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -137,7 +137,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{FGCode}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{FGCode}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="285" y="55" width="80" height="18" uuid="12a14105-c207-4550-a9bd-30a74a25a5c4"> <reportElement x="285" y="55" width="80" height="18" uuid="12a14105-c207-4550-a9bd-30a74a25a5c4">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -145,8 +145,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[成品名稱:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r86216baadfe7}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="365" y="55" width="150" height="18" uuid="62720d55-e8e1-49c8-a420-8318685e9e58"> <reportElement x="365" y="55" width="150" height="18" uuid="62720d55-e8e1-49c8-a420-8318685e9e58">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -156,7 +156,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{FGName}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{FGName}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="285" y="75" width="80" height="18" uuid="3ec46348-493e-403f-aefb-5f4aef992877"> <reportElement x="285" y="75" width="80" height="18" uuid="3ec46348-493e-403f-aefb-5f4aef992877">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -164,8 +164,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[需求數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd3d752f0f2e4}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="365" y="75" width="150" height="18" uuid="367706ae-196f-4b5d-b9b2-5fbc4d70ce9b"> <reportElement x="365" y="75" width="150" height="18" uuid="367706ae-196f-4b5d-b9b2-5fbc4d70ce9b">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -175,7 +175,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{RequiredQuantity}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{RequiredQuantity}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="285" y="35" width="80" height="18" uuid="411116fd-f273-4eed-bd6c-1db269cd9adb"> <reportElement x="285" y="35" width="80" height="18" uuid="411116fd-f273-4eed-bd6c-1db269cd9adb">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -183,8 +183,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[生產日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r9c35fe458ba5}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="365" y="35" width="150" height="18" uuid="f044c78b-cdcb-4a90-81c5-a6fc81b73efc"> <reportElement x="365" y="35" width="150" height="18" uuid="f044c78b-cdcb-4a90-81c5-a6fc81b73efc">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -194,7 +194,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{ProductionDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{ProductionDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="5" y="75" width="80" height="18" uuid="e280f805-b423-4ac7-a429-2d5d81edf3bc"> <reportElement x="5" y="75" width="80" height="18" uuid="e280f805-b423-4ac7-a429-2d5d81edf3bc">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -202,8 +202,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[銷售單位:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r9b7133939fe4}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="85" y="75" width="150" height="18" uuid="ee5b0bcd-5a86-43e1-a003-ea5c7b9dd147"> <reportElement x="85" y="75" width="150" height="18" uuid="ee5b0bcd-5a86-43e1-a003-ea5c7b9dd147">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -217,7 +217,7 @@
</pageHeader> </pageHeader>
<columnHeader> <columnHeader>
<band height="42" splitType="Stretch"> <band height="42" splitType="Stretch">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="10" width="50" height="18" uuid="c4baf479-7a41-49cb-a2cf-be798e11b2c1"> <reportElement x="0" y="10" width="50" height="18" uuid="c4baf479-7a41-49cb-a2cf-be798e11b2c1">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -226,9 +226,9 @@
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[序號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rab715e1b98f0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="50" y="10" width="95" height="18" uuid="e66fdecd-3672-423d-8a10-ed078a5ac5bf"> <reportElement x="50" y="10" width="95" height="18" uuid="e66fdecd-3672-423d-8a10-ed078a5ac5bf">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -237,9 +237,9 @@
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[路綫]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r95d67f026a0c}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="145" y="10" width="80" height="18" uuid="38721c72-5f81-4be3-b1e1-335562f1dc38"> <reportElement x="145" y="10" width="80" height="18" uuid="38721c72-5f81-4be3-b1e1-335562f1dc38">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -247,9 +247,9 @@
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7f693b56a6ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="225" y="10" width="245" height="18" uuid="558582fa-0269-47d6-960b-305e51a8ff0c"> <reportElement x="225" y="10" width="245" height="18" uuid="558582fa-0269-47d6-960b-305e51a8ff0c">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -257,9 +257,9 @@
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="470" y="10" width="84" height="18" uuid="bae79e0c-96f8-45dc-a5db-1c85466f860a"> <reportElement x="470" y="10" width="84" height="18" uuid="bae79e0c-96f8-45dc-a5db-1c85466f860a">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -267,8 +267,8 @@
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[已提數量]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re79ab7530b02}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="33" width="554" height="1" uuid="ff5ea71d-829e-40f0-bfa8-d223d9fc7769"> <reportElement x="0" y="33" width="554" height="1" uuid="ff5ea71d-829e-40f0-bfa8-d223d9fc7769">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>


+ 134
- 0
src/main/resources/i18n/reports.properties Ver ficheiro

@@ -0,0 +1,134 @@
r00041da98651=上架總計
r00c45eb6d637=送貨路線摘要(
r03ce1d5613e8=四月
r080fcc65b244= 頁
r09456e5bd8c2=上架數量
r0db83ab5ad90=材料消耗日期:
r0e9cf47b8ab4=物料出倉追蹤報告
r0eec66363def=箱數
r11cb5e87977f=到期日
r129bf23950c5=送貨日期
r14aba5f426df=三月
r1620c7944cce=成品編號:
r16b426416823=店鋪採購單編號:\n
r16d24ae82a7d=每單交貨總數:
r16d3eb3cba57=店鋪名稱 & 地址
r17f6b62ed896=貨品名稱
r1814ca0dcbea=送貨單編號:
r1af196452b7a=出貨數量
r1b1840749a63=送貨訂單編號
r1cb52e8436a0=提料人
r1ea2fde25c82=纍計存出量
r1efbb116be18=批號
r1f60da14d9c0=入庫檢查\n缺陷數量
r26101c67a651=箱數:
r2d36c3ab208f=審核時間
r313fd5bb330e=一月
r330e76596a33=庫存結餘報告
r3313eb0eab26=入庫檢查\n缺陷百分比
r33d99bd7d7ce=錯誤輸入\n或遺失
r37b5ae5f0edd=十二月
r38315806410a=貨車
r384f3abedb37=八月
r38aac4c4ec15=最後出倉日期:
r3a4716a37bef=物料編號:
r3b9bf196effe= 箱(蛋類除外)
r3baaab225b59=瑕疵品數量
r3d589b9b7f8a=地址:
r3dd6f613acd0=店鋪代碼
r3e002768eca6=成品出倉日期:
r469fb16b34e6=類型
r4876d5589e5b=盤盈虧
r4ce0ee8cc0b2=單位
r4d7049a1bca9=庫存盤點報告
r4dc2870c059c=單號:
r51024df5a7a1=品質檢查類型
r53fcb0cb5f04=庫存明細報告
r591faed0bf21=庫存品質檢測報告
r5b17a0615359=十月
r5d526c7219e5=物料名稱:
r5d940d9844a6=提料備注
r5e20027c6a98=實測值
r5f2d6fed3a7d=盤點前存量
r5f876eb35fb3=到期日期:\n
r604d446aa100=頁數
r60650ec2d16b=供應商:
r60940709a8ed=DN編號
r62feaa72467a=出庫
r63c7976d4b5b=纍計期初\n存量
r64838faf9fb0=工單編號
r649d1891700e=現存存貨
r65116ebb128b=店鋪採購單號:
r659a9e9a692d=採購訂單編號:
r6850973fd787=膠茜數目:
r6ba3e4fc4ed5=出入賬日期
r73005a9bafd9=完成生產日期:
r78b01a0a34a1=門店名稱
r7e6f86ce8a6b=入庫
r7eac0bb11fb9=存貨位置
r7f693b56a6ce=貨品編號
r832e34b15e49=纍計存量
r8404b57157c6=數量:
r86216baadfe7=成品名稱:
r8689d87a0ff1=收貨日期:
r8bf5d9b7ff89=QC 檢測日期:
r8d4f15f17db3=卸貨順序
r8d61728842d0=數量
r8f3cddd57d47=六月
r909fd3cf3808=庫存材料消耗趨勢報告
r92f8cd219e20=成品出倉追蹤報告
r93e2b9f9f280=五月
r9460041e30e6=貨品總量:
r9483d51c0380=品質檢查樣板
r95d67f026a0c=路綫
r9b7133939fe4=銷售單位:
r9c35fe458ba5=生產日期:
r9cd9cfdac0ff=入庫\n檢查備註
r9e0c4587c30c=入倉追蹤報告
r9e0c52c95eed=參考編號
r9e2304c74f73=提料單編號
r9e296b27523f=總和
r9eb0df469a62=入庫\n檢查結果
r9f96f7e891cd= 至
ra501f0a01799=不良品棄置
raa3a98ce3af5=纍計存入量
rab715e1b98f0=序號
raddfcfcdc60e=送貨日期:
raeb07bde6c88=期初存量
raeb34e99d155=生產日期:\n
raf1eb6fab37f=數量:\n
rb2778afe0187=日期:
rb568e0135677=年份:
rb7d45e4aed38=供應商名稱
rbad7c57898bb=盤盈虧百分比
rbca4ea568093=總出倉量:
rbe48450caef9=品質問題
rc23e5226dd29=計劃車次出發時間:
rc54be4c935e7=店鋪:
rcd2a4bdc0cd8=二月
rcfb0ffd45d73=盤點數
rd04825997b36=頁
rd27e4a4ff359=批次編號:
rd2ec8aa96e7a=貨車:
rd3d752f0f2e4=需求數量:
rd46b470b4009=QC 類型:
rd5712c61aadb=九月
rd62378893466=板頭紙(
rdd672eea7e72=最後入倉日期:
rdfd42b9c455a=七月
rdfef764f339a=十一月
re4e94fa79f81=成品出倉報告
re6eda806c6b1=報告日期:
re79ab7530b02=已提數量
reee4e96971fb=成品/半成品生產分析報告
rf03632dd7521=工單編號:
rf3924122809a=報告時間:
rf433fbec9e8a=入庫檢查\n樣品數量
rf495347d6acf=第
rf66b3d3ead11=總上架數量:
rf79aab5b7eed=到期日:
rf9015e9ab095=車線\n
rfa354ca634f3=)
rfaf5e4a94fd5=送貨單編號
rff67331bff3b=批次編號:\n
rffe7a1f62dab=存倉位置

+ 134
- 0
src/main/resources/i18n/reports_en.properties Ver ficheiro

@@ -0,0 +1,134 @@
r00041da98651=Put-away total
r00c45eb6d637=Delivery route summary (
r03ce1d5613e8=Apr
r080fcc65b244=
r09456e5bd8c2=Put-away qty
r0db83ab5ad90=Consumption date:
r0e9cf47b8ab4=Material outbound traceability report
r0eec66363def=Cartons
r11cb5e87977f=Expiry date
r129bf23950c5=Delivery date
r14aba5f426df=Mar
r1620c7944cce=Finished good code:
r16b426416823=Shop PO no.:\n
r16d24ae82a7d=Delivery total:
r16d3eb3cba57=Shop name and address
r17f6b62ed896=Item name
r1814ca0dcbea=Delivery note no.:
r1af196452b7a=Shipped qty
r1b1840749a63=Delivery order no.
r1cb52e8436a0=Picker
r1ea2fde25c82=Cumulative stock out
r1efbb116be18=Lot no.
r1f60da14d9c0=Stock-in check\ndefect qty
r26101c67a651=Cartons:
r2d36c3ab208f=Approved at
r313fd5bb330e=Jan
r330e76596a33=Stock balance report
r3313eb0eab26=Stock-in check\ndefect %
r33d99bd7d7ce=Mis-entry\nor loss
r37b5ae5f0edd=Dec
r38315806410a=Truck
r384f3abedb37=Aug
r38aac4c4ec15=Last stock-out date:
r3a4716a37bef=Material code:
r3b9bf196effe= Cartons (excl. eggs)
r3baaab225b59=Defect qty
r3d589b9b7f8a=Address:
r3dd6f613acd0=Shop code
r3e002768eca6=FG outbound date:
r469fb16b34e6=Type
r4876d5589e5b=Variance
r4ce0ee8cc0b2=UOM
r4d7049a1bca9=Stock take report
r4dc2870c059c=Doc no.:
r51024df5a7a1=QC type
r53fcb0cb5f04=Stock ledger report
r591faed0bf21=Stock QC report
r5b17a0615359=Oct
r5d526c7219e5=Material name:
r5d940d9844a6=Pick notes
r5e20027c6a98=Measured value
r5f2d6fed3a7d=Qty before count
r5f876eb35fb3=Expiry date:\n
r604d446aa100=Page
r60650ec2d16b=Supplier:
r60940709a8ed=DN no.
r62feaa72467a=Stock out
r63c7976d4b5b=Opening\nbalance
r64838faf9fb0=Job order no.
r649d1891700e=On hand
r65116ebb128b=Shop PO no.:
r659a9e9a692d=PO no.:
r6850973fd787=Plastic crates:
r6ba3e4fc4ed5=Ledger date
r73005a9bafd9=Production finished:
r78b01a0a34a1=Shop name
r7e6f86ce8a6b=Stock in
r7eac0bb11fb9=Stock location
r7f693b56a6ce=Item code
r832e34b15e49=Cumulative balance
r8404b57157c6=Qty:
r86216baadfe7=Finished good:
r8689d87a0ff1=Receipt date:
r8bf5d9b7ff89=QC date:
r8d4f15f17db3=Unload sequence
r8d61728842d0=Qty
r8f3cddd57d47=Jun
r909fd3cf3808=Material consumption trend report
r92f8cd219e20=FG outbound traceability report
r93e2b9f9f280=May
r9460041e30e6=Total qty:
r9483d51c0380=QC template
r95d67f026a0c=Route
r9b7133939fe4=Sales UOM:
r9c35fe458ba5=Production date:
r9cd9cfdac0ff=Stock-in\ncheck notes
r9e0c4587c30c=Stock-in traceability report
r9e0c52c95eed=Reference no.
r9e2304c74f73=Pick order no.
r9e296b27523f=Total
r9eb0df469a62=Stock-in\ncheck result
r9f96f7e891cd= to
ra501f0a01799=Damaged disposal
raa3a98ce3af5=Cumulative stock in
rab715e1b98f0=No.
raddfcfcdc60e=Delivery date:
raeb07bde6c88=Opening qty
raeb34e99d155=Production date:\n
raf1eb6fab37f=Qty:\n
rb2778afe0187=Date:
rb568e0135677=Year:
rb7d45e4aed38=Supplier name
rbad7c57898bb=Variance %
rbca4ea568093=Total outbound qty:
rbe48450caef9=Quality issue
rc23e5226dd29=Planned departure:
rc54be4c935e7=Shop:
rcd2a4bdc0cd8=Feb
rcfb0ffd45d73=Counted qty
rd04825997b36=Page
rd27e4a4ff359=Lot no.:
rd2ec8aa96e7a=Truck:
rd3d752f0f2e4=Required qty:
rd46b470b4009=QC type:
rd5712c61aadb=Sep
rd62378893466=Pallet sheet (
rdd672eea7e72=Last stock-in date:
rdfd42b9c455a=Jul
rdfef764f339a=Nov
re4e94fa79f81=Finished goods outbound report
re6eda806c6b1=Report date:
re79ab7530b02=Picked qty
reee4e96971fb=Finished / semi-finished production report
rf03632dd7521=Job order no.:
rf3924122809a=Report time:
rf433fbec9e8a=Stock-in check\nsample qty
rf495347d6acf=Page
rf66b3d3ead11=Total put-away qty:
rf79aab5b7eed=Expiry date:
rf9015e9ab095=Truck lane\n
rfa354ca634f3=)
rfaf5e4a94fd5=Delivery note no.
rff67331bff3b=Lot no.:\n
rffe7a1f62dab=Storage location

+ 43
- 43
src/main/resources/jasper/FGDeliveryReport.jrxml Ver ficheiro

@@ -83,13 +83,13 @@
<groupFooter> <groupFooter>
<band height="20"> <band height="20">
<printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression> <printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="424" y="0" width="78" height="19" uuid="17df3070-773d-4bac-8045-6b59d8673bb4"/> <reportElement x="424" y="0" width="78" height="19" uuid="17df3070-773d-4bac-8045-6b59d8673bb4"/>
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[每單交貨總數:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r16d24ae82a7d}]]></textFieldExpression>
</textField>
<textField pattern="#,##0"> <textField pattern="#,##0">
<reportElement x="502" y="0" width="80" height="19" uuid="939e4c5b-176c-4154-aabd-bf06c2a0e594"/> <reportElement x="502" y="0" width="80" height="19" uuid="939e4c5b-176c-4154-aabd-bf06c2a0e594"/>
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
@@ -129,7 +129,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="670" y="0" width="40" height="23" uuid="25f66e24-ad42-4ff6-ac86-ac1d1c6f3b03"> <reportElement x="670" y="0" width="40" height="23" uuid="25f66e24-ad42-4ff6-ac86-ac1d1c6f3b03">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -137,8 +137,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<staticText> <staticText>
<reportElement x="740" y="0" width="20" height="23" uuid="e0a5035b-8a7c-49c0-b012-baf4325774b7"> <reportElement x="740" y="0" width="20" height="23" uuid="e0a5035b-8a7c-49c0-b012-baf4325774b7">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
@@ -156,7 +156,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="30" width="90" height="23" uuid="5f860195-7684-4674-bcba-5e3af52a55da"> <reportElement x="8" y="30" width="90" height="23" uuid="5f860195-7684-4674-bcba-5e3af52a55da">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -164,8 +164,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="711" y="53" width="79" height="23" uuid="b1bba504-8ae4-4985-909c-e598c2e6001b"/> <reportElement x="711" y="53" width="79" height="23" uuid="b1bba504-8ae4-4985-909c-e598c2e6001b"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -173,7 +173,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{year}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{year}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="30" width="71" height="23" uuid="0986cf8b-0ade-490d-bcb5-f2b1aceaab15"> <reportElement x="640" y="30" width="71" height="23" uuid="0986cf8b-0ade-490d-bcb5-f2b1aceaab15">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -181,9 +181,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="53" width="71" height="23" uuid="3e31701d-067e-46eb-b691-a88829562c15"> <reportElement x="640" y="53" width="71" height="23" uuid="3e31701d-067e-46eb-b691-a88829562c15">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -191,8 +191,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[年份:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rb568e0135677}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="711" y="30" width="79" height="23" uuid="89bfffda-987c-4c76-bd0e-cfdb63d8bd0e"/> <reportElement x="711" y="30" width="79" height="23" uuid="89bfffda-987c-4c76-bd0e-cfdb63d8bd0e"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -207,7 +207,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="300" y="0" width="210" height="23" uuid="e34c7a3e-ea38-4b1b-bbdc-cfe4a5f969de"> <reportElement x="300" y="0" width="210" height="23" uuid="e34c7a3e-ea38-4b1b-bbdc-cfe4a5f969de">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -215,8 +215,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[成品出倉報告]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re4e94fa79f81}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="98" y="53" width="336" height="23" uuid="f855785e-5316-4c6c-a612-556f58dff006"> <reportElement x="98" y="53" width="336" height="23" uuid="f855785e-5316-4c6c-a612-556f58dff006">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -224,9 +224,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="53" width="90" height="23" uuid="1543eecf-9964-43b0-9103-e885209265e4"> <reportElement x="8" y="53" width="90" height="23" uuid="1543eecf-9964-43b0-9103-e885209265e4">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -235,9 +235,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[成品出倉日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3e002768eca6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="0" y="81" width="92" height="18" uuid="eb3506cf-6d61-4f70-901f-9576df17e66c"> <reportElement x="0" y="81" width="92" height="18" uuid="eb3506cf-6d61-4f70-901f-9576df17e66c">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -246,9 +246,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[送貨日期]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r129bf23950c5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="582" y="81" width="100" height="18" uuid="a9c9239d-6640-4196-9ce4-5be81522a99b"> <reportElement x="582" y="81" width="100" height="18" uuid="a9c9239d-6640-4196-9ce4-5be81522a99b">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -257,9 +257,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[單位]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r4ce0ee8cc0b2}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="92" y="81" width="140" height="18" uuid="0f570907-538c-4d1e-a261-5e275f2c3fbe"> <reportElement x="92" y="81" width="140" height="18" uuid="0f570907-538c-4d1e-a261-5e275f2c3fbe">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -268,9 +268,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[DN編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r60940709a8ed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="502" y="81" width="80" height="18" uuid="aa069323-43b9-448c-840e-97054ad358ef"> <reportElement x="502" y="81" width="80" height="18" uuid="aa069323-43b9-448c-840e-97054ad358ef">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -279,9 +279,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r8d61728842d0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="232" y="81" width="130" height="18" uuid="d8d2ecce-255a-46a5-9ded-949df09192de"> <reportElement x="232" y="81" width="130" height="18" uuid="d8d2ecce-255a-46a5-9ded-949df09192de">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -290,9 +290,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[送貨訂單編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1b1840749a63}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="362" y="81" width="140" height="18" uuid="805d0e34-eda9-45a6-9490-83d2282db99b"> <reportElement x="362" y="81" width="140" height="18" uuid="805d0e34-eda9-45a6-9490-83d2282db99b">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -301,9 +301,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[門店名稱]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r78b01a0a34a1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="682" y="81" width="100" height="18" uuid="0f680edd-048d-4ee1-8a00-2ec33eaf2c88"> <reportElement x="682" y="81" width="100" height="18" uuid="0f680edd-048d-4ee1-8a00-2ec33eaf2c88">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -312,8 +312,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[貨車]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r38315806410a}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="80" width="799" height="1" uuid="7c6becba-07e5-436b-aa4f-48e1711511bd"> <reportElement x="0" y="80" width="799" height="1" uuid="7c6becba-07e5-436b-aa4f-48e1711511bd">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>


+ 46
- 46
src/main/resources/jasper/FGStockOutTraceabilityReport.jrxml Ver ficheiro

@@ -74,7 +74,7 @@
<groupFooter> <groupFooter>
<band height="19"> <band height="19">
<printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression> <printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="410" y="0" width="80" height="18" uuid="73188a51-3255-443c-9fee-4f3b527072c4"> <reportElement x="410" y="0" width="80" height="18" uuid="73188a51-3255-443c-9fee-4f3b527072c4">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -82,8 +82,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[總出倉量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rbca4ea568093}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="490" y="0" width="59" height="18" uuid="e4734789-5213-4934-80fe-6d72f3c38f23"/> <reportElement x="490" y="0" width="59" height="18" uuid="e4734789-5213-4934-80fe-6d72f3c38f23"/>
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
@@ -127,7 +127,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="275" y="0" width="253" height="23" uuid="2b4bdbda-a606-455e-b4c7-f59ada12dcf4"> <reportElement x="275" y="0" width="253" height="23" uuid="2b4bdbda-a606-455e-b4c7-f59ada12dcf4">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -135,9 +135,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[成品出倉追蹤報告]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r92f8cd219e20}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="297107ea-5827-41bc-83a0-8d966b714e0f"> <reportElement x="10" y="53" width="90" height="23" uuid="297107ea-5827-41bc-83a0-8d966b714e0f">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/> <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -146,16 +146,16 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[最後出倉日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r38aac4c4ec15}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="100" y="53" width="560" height="23" uuid="76ed89e6-9e70-4cc3-9d38-ff5dc24cd094"/> <reportElement x="100" y="53" width="560" height="23" uuid="76ed89e6-9e70-4cc3-9d38-ff5dc24cd094"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="490" y="80" width="59" height="18" uuid="7950d513-4660-445b-9b18-08e062b66f30"> <reportElement x="490" y="80" width="59" height="18" uuid="7950d513-4660-445b-9b18-08e062b66f30">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -164,9 +164,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[出貨數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1af196452b7a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="410" y="80" width="80" height="18" uuid="a2e0f22f-b299-4712-84f7-7ba3b54b1d1c"> <reportElement x="410" y="80" width="80" height="18" uuid="a2e0f22f-b299-4712-84f7-7ba3b54b1d1c">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -175,9 +175,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="210" y="80" width="100" height="18" uuid="ccda69a3-43de-413b-b53c-1b572e92fcf8"> <reportElement x="210" y="80" width="100" height="18" uuid="ccda69a3-43de-413b-b53c-1b572e92fcf8">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -186,9 +186,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[提料單編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e2304c74f73}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="549" y="80" width="49" height="18" uuid="21d9afe9-fd02-4896-a478-60967afc50f4"> <reportElement x="549" y="80" width="49" height="18" uuid="21d9afe9-fd02-4896-a478-60967afc50f4">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -196,9 +196,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[提料人]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1cb52e8436a0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="310" y="80" width="100" height="18" uuid="03fc341e-7026-4f5e-b975-264097a7aeda"> <reportElement x="310" y="80" width="100" height="18" uuid="03fc341e-7026-4f5e-b975-264097a7aeda">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -207,9 +207,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[批號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1efbb116be18}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="710" y="80" width="92" height="18" uuid="0f155dfc-0aff-4935-aa8f-54b4f01af51e"> <reportElement x="710" y="80" width="92" height="18" uuid="0f155dfc-0aff-4935-aa8f-54b4f01af51e">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -217,9 +217,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isItalic="false"/> <font fontName="微軟正黑體" size="10" isItalic="false"/>
</textElement> </textElement>
<text><![CDATA[提料備注]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5d940d9844a6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="598" y="80" width="112" height="18" uuid="b20762b2-25ab-4fde-a693-a8b32776d866"> <reportElement x="598" y="80" width="112" height="18" uuid="b20762b2-25ab-4fde-a693-a8b32776d866">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -227,9 +227,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[存貨位置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7eac0bb11fb9}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="80" width="80" height="18" uuid="5db44150-7e52-40dc-9fab-fe174d818c61"> <reportElement x="10" y="80" width="80" height="18" uuid="5db44150-7e52-40dc-9fab-fe174d818c61">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -238,9 +238,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[送貨日期]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r129bf23950c5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="90" y="80" width="120" height="18" uuid="5db44150-7e52-40dc-9fab-fe174d818c61"> <reportElement x="90" y="80" width="120" height="18" uuid="5db44150-7e52-40dc-9fab-fe174d818c61">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -249,8 +249,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[送貨訂單編號]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r1b1840749a63}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="1" y="98" width="800" height="1" uuid="8ee25725-096b-4d76-9c7a-c0a41fbe6dbb"> <reportElement x="1" y="98" width="800" height="1" uuid="8ee25725-096b-4d76-9c7a-c0a41fbe6dbb">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -280,7 +280,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="9ab6647d-c771-4c0c-aab9-a07d96a7f0eb"> <reportElement x="10" y="30" width="90" height="23" uuid="9ab6647d-c771-4c0c-aab9-a07d96a7f0eb">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -288,8 +288,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report"> <textField evaluationTime="Report">
<reportElement x="768" y="0" width="30" height="23" uuid="0bd93c84-e6c8-4613-afec-12632071b737"> <reportElement x="768" y="0" width="30" height="23" uuid="0bd93c84-e6c8-4613-afec-12632071b737">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -305,7 +305,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="b5981ff6-676f-46c8-85bc-137714e60964"> <reportElement x="677" y="0" width="40" height="23" uuid="b5981ff6-676f-46c8-85bc-137714e60964">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -313,9 +313,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="53e03c14-32a0-4cdd-a883-542d6acb931a"> <reportElement x="640" y="29" width="68" height="23" uuid="53e03c14-32a0-4cdd-a883-542d6acb931a">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -323,8 +323,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
</band> </band>
</pageHeader> </pageHeader>
<detail> <detail>


+ 43
- 43
src/main/resources/jasper/ItemQCReport.jrxml Ver ficheiro

@@ -97,7 +97,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="322" y="0" width="158" height="23" uuid="0102d5e8-f072-4701-abff-8f62a4dc8463"> <reportElement x="322" y="0" width="158" height="23" uuid="0102d5e8-f072-4701-abff-8f62a4dc8463">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -105,9 +105,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[庫存品質檢測報告]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r591faed0bf21}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="600" y="80" width="90" height="18" uuid="e36d0d94-9345-46d2-8fa5-604676255cba"> <reportElement x="600" y="80" width="90" height="18" uuid="e36d0d94-9345-46d2-8fa5-604676255cba">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -116,9 +116,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[實測值]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5e20027c6a98}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="90" y="80" width="70" height="18" uuid="7db4a800-8573-408c-baad-f4f4885625c9"> <reportElement x="90" y="80" width="70" height="18" uuid="7db4a800-8573-408c-baad-f4f4885625c9">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -127,9 +127,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[品質檢查類型]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r51024df5a7a1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="490" y="80" width="50" height="18" uuid="808b9adc-e79f-469b-89f8-a4d8035d0b02"> <reportElement x="490" y="80" width="50" height="18" uuid="808b9adc-e79f-469b-89f8-a4d8035d0b02">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -138,9 +138,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r8d61728842d0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="160" y="80" width="160" height="18" uuid="f6036ff2-a00e-4809-bcb2-f4e86fb1ccf7"> <reportElement x="160" y="80" width="160" height="18" uuid="f6036ff2-a00e-4809-bcb2-f4e86fb1ccf7">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -149,9 +149,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[品質檢查樣板]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9483d51c0380}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="80" width="80" height="18" uuid="67fc8d08-74ed-4e63-af62-4bf566c2bea4"> <reportElement x="10" y="80" width="80" height="18" uuid="67fc8d08-74ed-4e63-af62-4bf566c2bea4">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -160,9 +160,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="550" y="80" width="50" height="18" uuid="7d8c7616-20d1-4081-853b-34bf90711d8f"> <reportElement x="550" y="80" width="50" height="18" uuid="7d8c7616-20d1-4081-853b-34bf90711d8f">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -171,9 +171,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[瑕疵品數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3baaab225b59}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="690" y="80" width="108" height="18" uuid="8b11690e-d04c-4402-9436-dba241594b9a"> <reportElement x="690" y="80" width="108" height="18" uuid="8b11690e-d04c-4402-9436-dba241594b9a">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -182,9 +182,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[參考編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e0c52c95eed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="330" y="80" width="160" height="18" uuid="26c0ec07-f36c-4f9a-8b9c-5e485bdd501e"> <reportElement x="330" y="80" width="160" height="18" uuid="26c0ec07-f36c-4f9a-8b9c-5e485bdd501e">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -193,8 +193,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[品質問題]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rbe48450caef9}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="98" width="799" height="1" uuid="726e7b1b-ad52-448c-8ad8-c091106d74dc"> <reportElement x="0" y="98" width="799" height="1" uuid="726e7b1b-ad52-448c-8ad8-c091106d74dc">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -225,7 +225,7 @@
</textElement> </textElement>
<text><![CDATA[/]]></text> <text><![CDATA[/]]></text>
</staticText> </staticText>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="e6d84133-39ab-4405-be2c-abdcd968076e"> <reportElement x="677" y="0" width="40" height="23" uuid="e6d84133-39ab-4405-be2c-abdcd968076e">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -233,8 +233,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="708" y="29" width="90" height="23" uuid="2531fea1-1a06-4c5b-9be5-c2f615d98dac"/> <reportElement x="708" y="29" width="90" height="23" uuid="2531fea1-1a06-4c5b-9be5-c2f615d98dac"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -242,7 +242,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportTime}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportTime}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="8160cd29-88e8-495b-b0ff-b816df69d2c2"> <reportElement x="640" y="29" width="68" height="23" uuid="8160cd29-88e8-495b-b0ff-b816df69d2c2">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -250,8 +250,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="100" y="30" width="335" height="23" uuid="20007ca4-c3e0-4e46-b05f-53ca15e9494f"/> <reportElement x="100" y="30" width="335" height="23" uuid="20007ca4-c3e0-4e46-b05f-53ca15e9494f"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
@@ -259,7 +259,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="a5e6b095-e0c8-4200-911f-cdf9fbc953b1"> <reportElement x="10" y="30" width="90" height="23" uuid="a5e6b095-e0c8-4200-911f-cdf9fbc953b1">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -267,9 +267,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="91156739-c0e2-4cd2-b4a5-a1bcef9a1eea"> <reportElement x="10" y="53" width="90" height="23" uuid="91156739-c0e2-4cd2-b4a5-a1bcef9a1eea">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/> <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -278,14 +278,14 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[QC 檢測日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8bf5d9b7ff89}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="100" y="53" width="560" height="23" uuid="96afd73f-53ed-42cd-9911-fdaac017d65b"/> <reportElement x="100" y="53" width="560" height="23" uuid="96afd73f-53ed-42cd-9911-fdaac017d65b"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{lastInDateStart} + " 至 " + $P{lastInDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastInDateStart} + $R{r9f96f7e891cd} + $P{lastInDateEnd}]]></textFieldExpression>
</textField> </textField>
<textField isBlankWhenNull="true"> <textField isBlankWhenNull="true">
<reportElement x="322" y="23" width="158" height="20" uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890"/> <reportElement x="322" y="23" width="158" height="20" uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890"/>
@@ -294,13 +294,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportSection} != null && !$P{reportSection}.isEmpty() ? "(" + $P{reportSection} + ")" : ""]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportSection} != null && !$P{reportSection}.isEmpty() ? "(" + $P{reportSection} + ")" : ""]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="450" y="53" width="70" height="23" uuid="b2c3d4e5-f6a7-8901-bcde-f12345678901"/> <reportElement x="450" y="53" width="70" height="23" uuid="b2c3d4e5-f6a7-8901-bcde-f12345678901"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[QC 類型:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd46b470b4009}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="520" y="53" width="80" height="23" uuid="c3d4e5f6-a7b8-9012-cdef-123456789012"/> <reportElement x="520" y="53" width="80" height="23" uuid="c3d4e5f6-a7b8-9012-cdef-123456789012"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">


+ 43
- 43
src/main/resources/jasper/MaterialStockOutTraceability.jrxml Ver ficheiro

@@ -69,7 +69,7 @@
<groupFooter> <groupFooter>
<band height="19"> <band height="19">
<printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression> <printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="330" y="0" width="80" height="18" uuid="127b8d9e-7af6-4973-bb72-e96ed062dcc9"> <reportElement x="330" y="0" width="80" height="18" uuid="127b8d9e-7af6-4973-bb72-e96ed062dcc9">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -77,8 +77,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[總出倉量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rbca4ea568093}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="410" y="0" width="59" height="18" uuid="bef3e158-73d3-40dc-8cc7-29f93f54113f"/> <reportElement x="410" y="0" width="59" height="18" uuid="bef3e158-73d3-40dc-8cc7-29f93f54113f"/>
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
@@ -123,7 +123,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="254" y="0" width="295" height="23" uuid="7de5fed6-2cd8-43a5-a81c-7dca66433be5"> <reportElement x="254" y="0" width="295" height="23" uuid="7de5fed6-2cd8-43a5-a81c-7dca66433be5">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -131,9 +131,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[物料出倉追蹤報告]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r0e9cf47b8ab4}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="469" y="80" width="61" height="18" uuid="c17221d2-b543-4558-a530-e2b0fe57815c"> <reportElement x="469" y="80" width="61" height="18" uuid="c17221d2-b543-4558-a530-e2b0fe57815c">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -141,9 +141,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[提料人]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1cb52e8436a0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="130" y="80" width="100" height="18" uuid="58633e83-5a17-4b4c-91fb-0a1e95377b78"> <reportElement x="130" y="80" width="100" height="18" uuid="58633e83-5a17-4b4c-91fb-0a1e95377b78">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -152,9 +152,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[提料單編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e2304c74f73}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="80" width="100" height="18" uuid="72c185c0-02bd-44c3-9a95-b8a8b118a5b8"> <reportElement x="230" y="80" width="100" height="18" uuid="72c185c0-02bd-44c3-9a95-b8a8b118a5b8">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -163,9 +163,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[批號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1efbb116be18}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="80" width="120" height="18" uuid="53dda4bc-e6ba-40de-8bdb-cf9dc0803b23"> <reportElement x="10" y="80" width="120" height="18" uuid="53dda4bc-e6ba-40de-8bdb-cf9dc0803b23">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -174,9 +174,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[工單編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r64838faf9fb0}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="530" y="80" width="100" height="18" uuid="5faf317c-4814-4507-ae8d-21652d8642ef"> <reportElement x="530" y="80" width="100" height="18" uuid="5faf317c-4814-4507-ae8d-21652d8642ef">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -184,9 +184,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[存倉位置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rffe7a1f62dab}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="330" y="80" width="80" height="18" uuid="fab273cc-7a7b-4598-be08-b1473ab32124"> <reportElement x="330" y="80" width="80" height="18" uuid="fab273cc-7a7b-4598-be08-b1473ab32124">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -195,9 +195,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="630" y="80" width="168" height="18" uuid="74f1c031-48f4-4b36-baed-1d3fd973b7ad"> <reportElement x="630" y="80" width="168" height="18" uuid="74f1c031-48f4-4b36-baed-1d3fd973b7ad">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -205,9 +205,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[提料備注]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5d940d9844a6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="410" y="80" width="59" height="18" uuid="1f547265-a0c6-472f-8c99-c2ea25c9a6d5"> <reportElement x="410" y="80" width="59" height="18" uuid="1f547265-a0c6-472f-8c99-c2ea25c9a6d5">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -216,8 +216,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[出貨數量]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r1af196452b7a}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="1" y="98" width="800" height="1" uuid="d327fcf7-3dfa-4470-b0df-8199ac04ab46"> <reportElement x="1" y="98" width="800" height="1" uuid="d327fcf7-3dfa-4470-b0df-8199ac04ab46">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -248,7 +248,7 @@
</textElement> </textElement>
<text><![CDATA[/]]></text> <text><![CDATA[/]]></text>
</staticText> </staticText>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="70764071-b438-4548-a01d-d3bbaf01ad62"> <reportElement x="677" y="0" width="40" height="23" uuid="70764071-b438-4548-a01d-d3bbaf01ad62">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -256,8 +256,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="708" y="29" width="90" height="23" uuid="55961375-1d81-4195-ae09-dbad03027460"/> <reportElement x="708" y="29" width="90" height="23" uuid="55961375-1d81-4195-ae09-dbad03027460"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -265,7 +265,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportTime}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportTime}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="60125685-7c9e-443d-afcb-8257836a7b0f"> <reportElement x="640" y="29" width="68" height="23" uuid="60125685-7c9e-443d-afcb-8257836a7b0f">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -273,8 +273,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="100" y="30" width="335" height="23" uuid="7e22315e-2b61-4d91-8c35-454a29a54440"/> <reportElement x="100" y="30" width="335" height="23" uuid="7e22315e-2b61-4d91-8c35-454a29a54440"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
@@ -282,7 +282,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="3dc4c597-8c09-424a-afcd-6fe9ae70137d"> <reportElement x="10" y="30" width="90" height="23" uuid="3dc4c597-8c09-424a-afcd-6fe9ae70137d">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -290,9 +290,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="7582a23b-1cd1-4058-b072-62d9a1b1f12a"> <reportElement x="10" y="53" width="90" height="23" uuid="7582a23b-1cd1-4058-b072-62d9a1b1f12a">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/> <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -301,14 +301,14 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[最後出倉日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r38aac4c4ec15}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="100" y="53" width="560" height="23" uuid="fb36cc91-4daf-439c-955e-148b0586bc95"/> <reportElement x="100" y="53" width="560" height="23" uuid="fb36cc91-4daf-439c-955e-148b0586bc95"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression>
</textField> </textField>
</band> </band>
</pageHeader> </pageHeader>


+ 67
- 67
src/main/resources/jasper/SemiFGProductionAnalysisReport.jrxml Ver ficheiro

@@ -366,7 +366,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="5a9e0fa9-418d-4838-9f82-e2f336e5bce7"> <reportElement x="677" y="0" width="40" height="23" uuid="5a9e0fa9-418d-4838-9f82-e2f336e5bce7">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -374,8 +374,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<staticText> <staticText>
<reportElement x="747" y="0" width="21" height="23" uuid="26d3d09c-48aa-4870-822a-c403e7faddfa"> <reportElement x="747" y="0" width="21" height="23" uuid="26d3d09c-48aa-4870-822a-c403e7faddfa">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
@@ -393,7 +393,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="0daddd8b-ca61-42af-9c2b-cbf11b7d7dac"> <reportElement x="10" y="30" width="90" height="23" uuid="0daddd8b-ca61-42af-9c2b-cbf11b7d7dac">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -401,8 +401,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="708" y="52" width="90" height="23" uuid="53b66bc3-4925-4340-add0-b4f2069a76c1"/> <reportElement x="708" y="52" width="90" height="23" uuid="53b66bc3-4925-4340-add0-b4f2069a76c1"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -410,7 +410,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{year}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{year}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="e2be43a3-3570-4a4e-a671-d96f872a5ad7"> <reportElement x="640" y="29" width="68" height="23" uuid="e2be43a3-3570-4a4e-a671-d96f872a5ad7">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -418,9 +418,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="52" width="68" height="23" uuid="29ed871d-3417-4978-9799-964389143451"> <reportElement x="640" y="52" width="68" height="23" uuid="29ed871d-3417-4978-9799-964389143451">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -428,8 +428,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[年份:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rb568e0135677}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="708" y="29" width="90" height="23" uuid="cb1fbb06-e953-40e5-bdbe-5fc219f7c884"/> <reportElement x="708" y="29" width="90" height="23" uuid="cb1fbb06-e953-40e5-bdbe-5fc219f7c884"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -444,7 +444,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="300" y="0" width="210" height="23" uuid="7451001b-6d5a-438c-82db-2b9e687d9a27"> <reportElement x="300" y="0" width="210" height="23" uuid="7451001b-6d5a-438c-82db-2b9e687d9a27">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -452,8 +452,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[成品/半成品生產分析報告]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{reee4e96971fb}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="100" y="53" width="336" height="23" uuid="b51949e1-c40a-4db0-a799-4243555893fd"> <reportElement x="100" y="53" width="336" height="23" uuid="b51949e1-c40a-4db0-a799-4243555893fd">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -461,9 +461,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="fb09a559-f5fa-4e56-a891-87c600a2745a"> <reportElement x="10" y="53" width="90" height="23" uuid="fb09a559-f5fa-4e56-a891-87c600a2745a">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -472,8 +472,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[完成生產日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r73005a9bafd9}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="75" width="799" height="1" uuid="f04b0470-72e7-42b6-80fd-f1dc4ea5fa66"> <reportElement x="0" y="75" width="799" height="1" uuid="f04b0470-72e7-42b6-80fd-f1dc4ea5fa66">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -488,16 +488,16 @@
</pageHeader> </pageHeader>
<columnHeader> <columnHeader>
<band height="28"> <band height="28">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="200" y="0" width="45" height="20" uuid="e4267f38-4a00-4a22-965d-9ab531262592"> <reportElement x="200" y="0" width="45" height="20" uuid="e4267f38-4a00-4a22-965d-9ab531262592">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
</reportElement> </reportElement>
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[一月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r313fd5bb330e}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="650" y="0" width="45" height="20" uuid="e51758d1-2a7e-4fef-8b41-206e9aa6c611"> <reportElement x="650" y="0" width="45" height="20" uuid="e51758d1-2a7e-4fef-8b41-206e9aa6c611">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -505,9 +505,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[十一月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rdfef764f339a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="695" y="0" width="45" height="20" uuid="d7c79995-7b3c-4622-8d08-6b4a87345cbe"> <reportElement x="695" y="0" width="45" height="20" uuid="d7c79995-7b3c-4622-8d08-6b4a87345cbe">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -515,9 +515,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[十二月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r37b5ae5f0edd}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="290" y="0" width="45" height="20" uuid="ac124afb-3aa8-4ec6-b4a8-8de161e8bbc5"> <reportElement x="290" y="0" width="45" height="20" uuid="ac124afb-3aa8-4ec6-b4a8-8de161e8bbc5">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -525,9 +525,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[三月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r14aba5f426df}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="740" y="0" width="50" height="20" uuid="f092d4db-d5c5-4515-a826-8fec621a8992"> <reportElement x="740" y="0" width="50" height="20" uuid="f092d4db-d5c5-4515-a826-8fec621a8992">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -535,9 +535,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[上架總計]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r00041da98651}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="560" y="0" width="45" height="20" uuid="85c77a9b-c044-4bc2-8cd9-3b0058e4b74e"> <reportElement x="560" y="0" width="45" height="20" uuid="85c77a9b-c044-4bc2-8cd9-3b0058e4b74e">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -545,9 +545,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[九月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rd5712c61aadb}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="245" y="0" width="45" height="20" uuid="ec7698ae-c92b-4b44-9f7a-28f10ba5f385"> <reportElement x="245" y="0" width="45" height="20" uuid="ec7698ae-c92b-4b44-9f7a-28f10ba5f385">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -555,9 +555,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle" markup="html"> <textElement textAlignment="Right" verticalAlignment="Middle" markup="html">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[二月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rcd2a4bdc0cd8}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="380" y="0" width="45" height="20" uuid="5204319c-5b4e-421b-9493-4dd988caca52"> <reportElement x="380" y="0" width="45" height="20" uuid="5204319c-5b4e-421b-9493-4dd988caca52">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -565,9 +565,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[五月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r93e2b9f9f280}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="605" y="0" width="45" height="20" uuid="a6161aa7-2abd-4bb6-894d-ccdd6f9575c4"> <reportElement x="605" y="0" width="45" height="20" uuid="a6161aa7-2abd-4bb6-894d-ccdd6f9575c4">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -575,9 +575,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[十月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5b17a0615359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="425" y="0" width="45" height="20" uuid="424446ec-655d-4bff-a30a-61e898dbc7ad"> <reportElement x="425" y="0" width="45" height="20" uuid="424446ec-655d-4bff-a30a-61e898dbc7ad">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -585,9 +585,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[六月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r8f3cddd57d47}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="515" y="0" width="45" height="20" uuid="2a9e0115-d056-4c4b-b0b2-0800f55435ad"> <reportElement x="515" y="0" width="45" height="20" uuid="2a9e0115-d056-4c4b-b0b2-0800f55435ad">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -595,9 +595,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true" isItalic="false"/> <font fontName="微軟正黑體" size="10" isBold="true" isItalic="false"/>
</textElement> </textElement>
<text><![CDATA[八月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r384f3abedb37}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="470" y="0" width="45" height="20" uuid="b221e73b-0f35-4036-bffb-9230a495b827"> <reportElement x="470" y="0" width="45" height="20" uuid="b221e73b-0f35-4036-bffb-9230a495b827">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -605,9 +605,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[七月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rdfd42b9c455a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="335" y="0" width="45" height="20" uuid="8c5260bc-9079-4f62-803d-1c3e3fc9f41c"> <reportElement x="335" y="0" width="45" height="20" uuid="8c5260bc-9079-4f62-803d-1c3e3fc9f41c">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -615,14 +615,14 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[四月]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r03ce1d5613e8}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="1" y="23" width="799" height="1" uuid="ad5d85ce-e7fe-46c0-9b37-76b2ed3f4152"> <reportElement x="1" y="23" width="799" height="1" uuid="ad5d85ce-e7fe-46c0-9b37-76b2ed3f4152">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="140" y="0" width="60" height="20" uuid="08d93aec-e4ae-46a6-afcb-3af9de518ca6"> <reportElement x="140" y="0" width="60" height="20" uuid="08d93aec-e4ae-46a6-afcb-3af9de518ca6">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -630,9 +630,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[單位]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r4ce0ee8cc0b2}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="0" width="48" height="20" uuid="b4a1a243-36d7-46f7-90ea-b38dd5641a9c"> <reportElement x="10" y="0" width="48" height="20" uuid="b4a1a243-36d7-46f7-90ea-b38dd5641a9c">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -640,9 +640,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7f693b56a6ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="58" y="0" width="82" height="20" uuid="0b6e2d73-ed45-46c8-b330-07d81fe7f2da"> <reportElement x="58" y="0" width="82" height="20" uuid="0b6e2d73-ed45-46c8-b330-07d81fe7f2da">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -650,8 +650,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression>
</textField>
</band> </band>
</columnHeader> </columnHeader>
</jasperReport> </jasperReport>

+ 42
- 43
src/main/resources/jasper/StockBalanceReport.jrxml Ver ficheiro

@@ -200,7 +200,7 @@
</background> </background>
<pageHeader> <pageHeader>
<band height="87" splitType="Stretch"> <band height="87" splitType="Stretch">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="351" y="0" width="101" height="23" uuid="e670cb8d-d591-4418-8bce-36398e286e1f"> <reportElement x="351" y="0" width="101" height="23" uuid="e670cb8d-d591-4418-8bce-36398e286e1f">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -208,9 +208,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[庫存結餘報告]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r330e76596a33}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="548" y="58" width="62" height="28" uuid="b208e97a-9d94-40ba-9922-3399d8e2f3ac"> <reportElement x="548" y="58" width="62" height="28" uuid="b208e97a-9d94-40ba-9922-3399d8e2f3ac">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -219,9 +219,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[不良品棄置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{ra501f0a01799}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="308" y="58" width="60" height="28" uuid="e95456ea-35da-4b71-8dc6-f11cf1c519d5"> <reportElement x="308" y="58" width="60" height="28" uuid="e95456ea-35da-4b71-8dc6-f11cf1c519d5">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -229,9 +229,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[纍計存入量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{raa3a98ce3af5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="428" y="58" width="60" height="28" uuid="7a1741f9-6a23-4c04-81dd-c5e87c7a5142"> <reportElement x="428" y="58" width="60" height="28" uuid="7a1741f9-6a23-4c04-81dd-c5e87c7a5142">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -240,10 +240,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[錯誤輸入
或遺失]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r33d99bd7d7ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="488" y="58" width="60" height="28" uuid="66934b77-2d44-4218-b459-680e2aeca2e4"> <reportElement x="488" y="58" width="60" height="28" uuid="66934b77-2d44-4218-b459-680e2aeca2e4">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -252,8 +251,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[盤盈虧]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r4876d5589e5b}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="100" y="30" width="335" height="23" uuid="849b3e33-5b07-41df-b761-2e2411d5d26e"/> <reportElement x="100" y="30" width="335" height="23" uuid="849b3e33-5b07-41df-b761-2e2411d5d26e"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
@@ -261,7 +260,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="38bc1ddd-2d49-417c-a0f4-15180f8dc295"> <reportElement x="640" y="29" width="68" height="23" uuid="38bc1ddd-2d49-417c-a0f4-15180f8dc295">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -269,14 +268,14 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="57" width="799" height="1" uuid="1c04b46e-491f-42a7-b8e0-2418dd068ace"> <reportElement x="0" y="57" width="799" height="1" uuid="1c04b46e-491f-42a7-b8e0-2418dd068ace">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="0adb4709-fdd4-4c69-894e-6e4382527335"> <reportElement x="677" y="0" width="40" height="23" uuid="0adb4709-fdd4-4c69-894e-6e4382527335">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -284,8 +283,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="708" y="29" width="90" height="23" uuid="dabd2770-cc5c-4337-8ba9-a09cd9fa2b32"/> <reportElement x="708" y="29" width="90" height="23" uuid="dabd2770-cc5c-4337-8ba9-a09cd9fa2b32"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -310,7 +309,7 @@
</textElement> </textElement>
<text><![CDATA[/]]></text> <text><![CDATA[/]]></text>
</staticText> </staticText>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="d0a07e02-a35c-4a9c-aea7-e7a97465e6e4"> <reportElement x="10" y="30" width="90" height="23" uuid="d0a07e02-a35c-4a9c-aea7-e7a97465e6e4">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -318,8 +317,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report"> <textField evaluationTime="Report">
<reportElement x="768" y="0" width="30" height="23" uuid="de74acaa-0000-47f4-8358-825ac920082d"> <reportElement x="768" y="0" width="30" height="23" uuid="de74acaa-0000-47f4-8358-825ac920082d">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -338,7 +337,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="242" y="58" width="66" height="28" uuid="360cf13a-93e7-45d4-8a4d-9e9506a6ad3f"> <reportElement x="242" y="58" width="66" height="28" uuid="360cf13a-93e7-45d4-8a4d-9e9506a6ad3f">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -347,9 +346,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[期初存量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{raeb07bde6c88}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="368" y="58" width="60" height="28" uuid="a3ea1b07-2108-409f-adee-8478374d767a"> <reportElement x="368" y="58" width="60" height="28" uuid="a3ea1b07-2108-409f-adee-8478374d767a">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -357,9 +356,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[纍計存出量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1ea2fde25c82}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="610" y="58" width="59" height="28" uuid="4efdbfd9-2ad2-45de-aab9-b234d43b6026"> <reportElement x="610" y="58" width="59" height="28" uuid="4efdbfd9-2ad2-45de-aab9-b234d43b6026">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -368,9 +367,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[現存存貨]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r649d1891700e}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="58" width="48" height="28" uuid="f9475692-14cd-49e8-aac0-ad972aca79e1"> <reportElement x="10" y="58" width="48" height="28" uuid="f9475692-14cd-49e8-aac0-ad972aca79e1">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -379,9 +378,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="false"/> <font fontName="微軟正黑體" size="10" isBold="false"/>
</textElement> </textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7f693b56a6ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="180" y="58" width="62" height="28" uuid="e6c47019-de01-4e76-b4f8-cad3826d88b0"> <reportElement x="180" y="58" width="62" height="28" uuid="e6c47019-de01-4e76-b4f8-cad3826d88b0">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -390,9 +389,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="false"/> <font fontName="微軟正黑體" size="10" isBold="false"/>
</textElement> </textElement>
<text><![CDATA[單位]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r4ce0ee8cc0b2}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="58" y="58" width="112" height="28" uuid="759e71ab-8f6b-4664-9669-1da737d41343"> <reportElement x="58" y="58" width="112" height="28" uuid="759e71ab-8f6b-4664-9669-1da737d41343">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -401,8 +400,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="false"/> <font fontName="微軟正黑體" size="10" isBold="false"/>
</textElement> </textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression>
</textField>
<staticText> <staticText>
<reportElement x="720" y="58" width="78" height="28" uuid="722cd2e3-3d4a-4edd-a2fc-ca82fd34efb6"> <reportElement x="720" y="58" width="78" height="28" uuid="722cd2e3-3d4a-4edd-a2fc-ca82fd34efb6">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>


+ 52
- 57
src/main/resources/jasper/StockInTraceabilityReport.jrxml Ver ficheiro

@@ -78,7 +78,7 @@
<groupFooter> <groupFooter>
<band height="19"> <band height="19">
<printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression> <printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="220" y="0" width="60" height="18" uuid="8d002bea-8762-4e6b-9101-35a570f55031"> <reportElement x="220" y="0" width="60" height="18" uuid="8d002bea-8762-4e6b-9101-35a570f55031">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -87,8 +87,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[總上架數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf66b3d3ead11}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="280" y="0" width="50" height="18" uuid="d98c4478-22bd-4fd6-9be4-b3777f91de6d"> <reportElement x="280" y="0" width="50" height="18" uuid="d98c4478-22bd-4fd6-9be4-b3777f91de6d">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -140,7 +140,7 @@
</group> </group>
<pageHeader> <pageHeader>
<band height="109" splitType="Stretch"> <band height="109" splitType="Stretch">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="335" y="0" width="100" height="23" uuid="15ab756b-0e92-466c-be47-112c2ee1aad1"> <reportElement x="335" y="0" width="100" height="23" uuid="15ab756b-0e92-466c-be47-112c2ee1aad1">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -148,9 +148,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[入倉追蹤報告]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e0c4587c30c}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="280" y="80" width="50" height="28" uuid="5c05c89c-843b-4fd6-928c-002c6a529679"> <reportElement stretchType="RelativeToTallestObject" x="280" y="80" width="50" height="28" uuid="5c05c89c-843b-4fd6-928c-002c6a529679">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -159,9 +159,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[上架數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r09456e5bd8c2}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="10" y="80" width="110" height="28" uuid="3fa7c301-1c2a-430b-8985-338ebf7aa6cf"> <reportElement stretchType="RelativeToTallestObject" x="10" y="80" width="110" height="28" uuid="3fa7c301-1c2a-430b-8985-338ebf7aa6cf">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -170,9 +170,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[送貨單編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rfaf5e4a94fd5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="690" y="80" width="108" height="28" uuid="db5b9c55-0185-420b-ba6c-0e10d154cc8a"> <reportElement stretchType="RelativeToTallestObject" x="690" y="80" width="108" height="28" uuid="db5b9c55-0185-420b-ba6c-0e10d154cc8a">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -181,9 +181,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[供應商名稱]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rb7d45e4aed38}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="220" y="80" width="60" height="28" uuid="cd7a146a-1af0-4428-9b88-dcb159691656"> <reportElement stretchType="RelativeToTallestObject" x="220" y="80" width="60" height="28" uuid="cd7a146a-1af0-4428-9b88-dcb159691656">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -192,9 +192,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="540" y="80" width="60" height="28" uuid="58b33148-a772-4295-b10a-718fccc89683"> <reportElement stretchType="RelativeToTallestObject" x="540" y="80" width="60" height="28" uuid="58b33148-a772-4295-b10a-718fccc89683">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -203,10 +203,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[入庫
檢查備註]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9cd9cfdac0ff}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="430" y="80" width="60" height="28" uuid="c70088ac-bcf1-48a1-bb82-ad238a3dbe70"> <reportElement stretchType="RelativeToTallestObject" x="430" y="80" width="60" height="28" uuid="c70088ac-bcf1-48a1-bb82-ad238a3dbe70">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -215,10 +214,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[入庫檢查
缺陷百分比]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3313eb0eab26}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="600" y="80" width="80" height="28" uuid="c1d0f0dd-34d6-4716-90bd-deb94e5084d2"> <reportElement stretchType="RelativeToTallestObject" x="600" y="80" width="80" height="28" uuid="c1d0f0dd-34d6-4716-90bd-deb94e5084d2">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -227,9 +225,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[存貨位置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7eac0bb11fb9}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="330" y="80" width="50" height="28" uuid="006c5557-c246-47cd-b599-4775f71cbf16"> <reportElement stretchType="RelativeToTallestObject" x="330" y="80" width="50" height="28" uuid="006c5557-c246-47cd-b599-4775f71cbf16">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -238,10 +236,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[入庫檢查
樣品數量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rf433fbec9e8a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="120" y="80" width="100" height="28" uuid="2f1e753f-ee01-42a1-a4e3-f75985403431"> <reportElement stretchType="RelativeToTallestObject" x="120" y="80" width="100" height="28" uuid="2f1e753f-ee01-42a1-a4e3-f75985403431">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -250,9 +247,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[批號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1efbb116be18}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="490" y="80" width="50" height="28" uuid="3c732314-35c2-42ad-98e6-ef42a512c233"> <reportElement stretchType="RelativeToTallestObject" x="490" y="80" width="50" height="28" uuid="3c732314-35c2-42ad-98e6-ef42a512c233">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -261,10 +258,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[入庫
檢查結果]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9eb0df469a62}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement stretchType="RelativeToTallestObject" x="380" y="80" width="50" height="28" uuid="1f82d706-0492-46e4-b692-dced5c97c824"> <reportElement stretchType="RelativeToTallestObject" x="380" y="80" width="50" height="28" uuid="1f82d706-0492-46e4-b692-dced5c97c824">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -273,9 +269,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[入庫檢查
缺陷數量]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r1f60da14d9c0}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="108" width="799" height="1" uuid="3190fa6b-3b27-4639-8de6-c93c8438ce35"> <reportElement x="0" y="108" width="799" height="1" uuid="3190fa6b-3b27-4639-8de6-c93c8438ce35">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -288,7 +283,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="640" y="29" width="68" height="23" uuid="20514f3e-91e7-4d98-ade8-725d4f390397"> <reportElement x="640" y="29" width="68" height="23" uuid="20514f3e-91e7-4d98-ade8-725d4f390397">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -296,8 +291,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="79" width="799" height="1" uuid="4ff25125-9aa9-4dae-8a3e-55ab708ed66a"> <reportElement x="0" y="79" width="799" height="1" uuid="4ff25125-9aa9-4dae-8a3e-55ab708ed66a">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -308,9 +303,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{lastInDateStart} + " 至 " + $P{lastInDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastInDateStart} + $R{r9f96f7e891cd} + $P{lastInDateEnd}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="2ebe654d-a62f-48a7-b5f5-af7e1089dc84"> <reportElement x="677" y="0" width="40" height="23" uuid="2ebe654d-a62f-48a7-b5f5-af7e1089dc84">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -318,8 +313,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="708" y="29" width="90" height="23" uuid="e751b9ba-1906-455c-a638-f3923a29c78b"/> <reportElement x="708" y="29" width="90" height="23" uuid="e751b9ba-1906-455c-a638-f3923a29c78b"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -344,7 +339,7 @@
</textElement> </textElement>
<text><![CDATA[/]]></text> <text><![CDATA[/]]></text>
</staticText> </staticText>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="f57a2b35-2bb4-46cc-b4fc-80fc7adc8ee2"> <reportElement x="10" y="30" width="90" height="23" uuid="f57a2b35-2bb4-46cc-b4fc-80fc7adc8ee2">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -352,9 +347,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="8c19e04a-12bc-4d58-9873-ffe83ae77811"> <reportElement x="10" y="53" width="90" height="23" uuid="8c19e04a-12bc-4d58-9873-ffe83ae77811">
<property name="com.jaspersoft.studio.unit.y" value="pixel"/> <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -363,8 +358,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[最後入倉日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rdd672eea7e72}]]></textFieldExpression>
</textField>
<textField evaluationTime="Report"> <textField evaluationTime="Report">
<reportElement x="768" y="0" width="30" height="23" uuid="3ef90e65-b07e-46d1-828a-7a345f96dc0d"> <reportElement x="768" y="0" width="30" height="23" uuid="3ef90e65-b07e-46d1-828a-7a345f96dc0d">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>


+ 67
- 67
src/main/resources/jasper/StockItemConsumptionTrendReport.jrxml Ver ficheiro

@@ -366,7 +366,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="5a9e0fa9-418d-4838-9f82-e2f336e5bce7"> <reportElement x="677" y="0" width="40" height="23" uuid="5a9e0fa9-418d-4838-9f82-e2f336e5bce7">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -374,8 +374,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
<staticText> <staticText>
<reportElement x="747" y="0" width="21" height="23" uuid="26d3d09c-48aa-4870-822a-c403e7faddfa"> <reportElement x="747" y="0" width="21" height="23" uuid="26d3d09c-48aa-4870-822a-c403e7faddfa">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
@@ -393,7 +393,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="0daddd8b-ca61-42af-9c2b-cbf11b7d7dac"> <reportElement x="10" y="30" width="90" height="23" uuid="0daddd8b-ca61-42af-9c2b-cbf11b7d7dac">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -401,8 +401,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="738" y="52" width="60" height="23" uuid="53b66bc3-4925-4340-add0-b4f2069a76c1"/> <reportElement x="738" y="52" width="60" height="23" uuid="53b66bc3-4925-4340-add0-b4f2069a76c1"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -410,7 +410,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{year}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{year}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="670" y="29" width="68" height="23" uuid="e2be43a3-3570-4a4e-a671-d96f872a5ad7"> <reportElement x="670" y="29" width="68" height="23" uuid="e2be43a3-3570-4a4e-a671-d96f872a5ad7">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -418,9 +418,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="670" y="52" width="68" height="23" uuid="29ed871d-3417-4978-9799-964389143451"> <reportElement x="670" y="52" width="68" height="23" uuid="29ed871d-3417-4978-9799-964389143451">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -428,8 +428,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[年份:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rb568e0135677}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="738" y="29" width="60" height="23" uuid="cb1fbb06-e953-40e5-bdbe-5fc219f7c884"/> <reportElement x="738" y="29" width="60" height="23" uuid="cb1fbb06-e953-40e5-bdbe-5fc219f7c884"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -444,7 +444,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="300" y="0" width="210" height="23" uuid="7451001b-6d5a-438c-82db-2b9e687d9a27"> <reportElement x="300" y="0" width="210" height="23" uuid="7451001b-6d5a-438c-82db-2b9e687d9a27">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -452,8 +452,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[庫存材料消耗趨勢報告]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r909fd3cf3808}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="100" y="53" width="336" height="23" uuid="b51949e1-c40a-4db0-a799-4243555893fd"> <reportElement x="100" y="53" width="336" height="23" uuid="b51949e1-c40a-4db0-a799-4243555893fd">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -461,9 +461,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="53" width="90" height="23" uuid="fb09a559-f5fa-4e56-a891-87c600a2745a"> <reportElement x="10" y="53" width="90" height="23" uuid="fb09a559-f5fa-4e56-a891-87c600a2745a">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -472,8 +472,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[材料消耗日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r0db83ab5ad90}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="76" width="799" height="1" uuid="c97a9d60-80d8-4bdb-b7ba-999b3959417b"> <reportElement x="0" y="76" width="799" height="1" uuid="c97a9d60-80d8-4bdb-b7ba-999b3959417b">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -488,16 +488,16 @@
</pageHeader> </pageHeader>
<columnHeader> <columnHeader>
<band height="29"> <band height="29">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="200" y="0" width="45" height="20" uuid="e4267f38-4a00-4a22-965d-9ab531262592"> <reportElement x="200" y="0" width="45" height="20" uuid="e4267f38-4a00-4a22-965d-9ab531262592">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
</reportElement> </reportElement>
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[一月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r313fd5bb330e}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="650" y="0" width="45" height="20" uuid="e51758d1-2a7e-4fef-8b41-206e9aa6c611"> <reportElement x="650" y="0" width="45" height="20" uuid="e51758d1-2a7e-4fef-8b41-206e9aa6c611">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -505,9 +505,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[十一月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rdfef764f339a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="695" y="0" width="45" height="20" uuid="d7c79995-7b3c-4622-8d08-6b4a87345cbe"> <reportElement x="695" y="0" width="45" height="20" uuid="d7c79995-7b3c-4622-8d08-6b4a87345cbe">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -515,9 +515,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[十二月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r37b5ae5f0edd}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="290" y="0" width="45" height="20" uuid="ac124afb-3aa8-4ec6-b4a8-8de161e8bbc5"> <reportElement x="290" y="0" width="45" height="20" uuid="ac124afb-3aa8-4ec6-b4a8-8de161e8bbc5">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -525,9 +525,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[三月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r14aba5f426df}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="740" y="0" width="50" height="20" uuid="f092d4db-d5c5-4515-a826-8fec621a8992"> <reportElement x="740" y="0" width="50" height="20" uuid="f092d4db-d5c5-4515-a826-8fec621a8992">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -535,9 +535,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[總和]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e296b27523f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="560" y="0" width="45" height="20" uuid="85c77a9b-c044-4bc2-8cd9-3b0058e4b74e"> <reportElement x="560" y="0" width="45" height="20" uuid="85c77a9b-c044-4bc2-8cd9-3b0058e4b74e">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -545,9 +545,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[九月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rd5712c61aadb}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="245" y="0" width="45" height="20" uuid="ec7698ae-c92b-4b44-9f7a-28f10ba5f385"> <reportElement x="245" y="0" width="45" height="20" uuid="ec7698ae-c92b-4b44-9f7a-28f10ba5f385">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -555,9 +555,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle" markup="html"> <textElement textAlignment="Right" verticalAlignment="Middle" markup="html">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[二月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rcd2a4bdc0cd8}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="380" y="0" width="45" height="20" uuid="5204319c-5b4e-421b-9493-4dd988caca52"> <reportElement x="380" y="0" width="45" height="20" uuid="5204319c-5b4e-421b-9493-4dd988caca52">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -565,9 +565,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[五月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r93e2b9f9f280}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="605" y="0" width="45" height="20" uuid="a6161aa7-2abd-4bb6-894d-ccdd6f9575c4"> <reportElement x="605" y="0" width="45" height="20" uuid="a6161aa7-2abd-4bb6-894d-ccdd6f9575c4">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -575,9 +575,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[十月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5b17a0615359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="425" y="0" width="45" height="20" uuid="424446ec-655d-4bff-a30a-61e898dbc7ad"> <reportElement x="425" y="0" width="45" height="20" uuid="424446ec-655d-4bff-a30a-61e898dbc7ad">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -585,9 +585,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[六月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r8f3cddd57d47}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="515" y="0" width="45" height="20" uuid="2a9e0115-d056-4c4b-b0b2-0800f55435ad"> <reportElement x="515" y="0" width="45" height="20" uuid="2a9e0115-d056-4c4b-b0b2-0800f55435ad">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -595,9 +595,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true" isItalic="false"/> <font fontName="微軟正黑體" size="10" isBold="true" isItalic="false"/>
</textElement> </textElement>
<text><![CDATA[八月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r384f3abedb37}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="470" y="0" width="45" height="20" uuid="b221e73b-0f35-4036-bffb-9230a495b827"> <reportElement x="470" y="0" width="45" height="20" uuid="b221e73b-0f35-4036-bffb-9230a495b827">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -605,9 +605,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[七月]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rdfd42b9c455a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="335" y="0" width="45" height="20" uuid="8c5260bc-9079-4f62-803d-1c3e3fc9f41c"> <reportElement x="335" y="0" width="45" height="20" uuid="8c5260bc-9079-4f62-803d-1c3e3fc9f41c">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -615,14 +615,14 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[四月]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r03ce1d5613e8}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="0" y="24" width="799" height="1" uuid="ad5d85ce-e7fe-46c0-9b37-76b2ed3f4152"> <reportElement x="0" y="24" width="799" height="1" uuid="ad5d85ce-e7fe-46c0-9b37-76b2ed3f4152">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="130" y="0" width="70" height="20" uuid="08d93aec-e4ae-46a6-afcb-3af9de518ca6"> <reportElement x="130" y="0" width="70" height="20" uuid="08d93aec-e4ae-46a6-afcb-3af9de518ca6">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -630,9 +630,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[單位]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r4ce0ee8cc0b2}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="0" width="48" height="20" uuid="b4a1a243-36d7-46f7-90ea-b38dd5641a9c"> <reportElement x="10" y="0" width="48" height="20" uuid="b4a1a243-36d7-46f7-90ea-b38dd5641a9c">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -640,9 +640,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[貨品編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7f693b56a6ce}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="58" y="0" width="72" height="20" uuid="0b6e2d73-ed45-46c8-b330-07d81fe7f2da"> <reportElement x="58" y="0" width="72" height="20" uuid="0b6e2d73-ed45-46c8-b330-07d81fe7f2da">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -650,8 +650,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[貨品名稱]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression>
</textField>
</band> </band>
</columnHeader> </columnHeader>
</jasperReport> </jasperReport>

+ 45
- 46
src/main/resources/jasper/StockLedgarReport.jrxml Ver ficheiro

@@ -89,7 +89,7 @@
<groupFooter> <groupFooter>
<band height="19"> <band height="19">
<printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression> <printWhenExpression><![CDATA[$V{Group1_COUNT} > 1]]></printWhenExpression>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="359" y="0" width="57" height="18" uuid="518b1512-2f82-48ca-b334-652fe5991b72"> <reportElement x="359" y="0" width="57" height="18" uuid="518b1512-2f82-48ca-b334-652fe5991b72">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -98,8 +98,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[貨品總量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r9460041e30e6}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="416" y="0" width="50" height="18" uuid="6c141d7d-766e-49bf-b987-e790312573a5"> <reportElement x="416" y="0" width="50" height="18" uuid="6c141d7d-766e-49bf-b987-e790312573a5">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -151,7 +151,7 @@
</group> </group>
<pageHeader> <pageHeader>
<band height="96" splitType="Stretch"> <band height="96" splitType="Stretch">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="324" y="5" width="165" height="23" uuid="61492f60-688d-4110-b8d2-fcc5b5b24ba7"> <reportElement x="324" y="5" width="165" height="23" uuid="61492f60-688d-4110-b8d2-fcc5b5b24ba7">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -159,8 +159,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[庫存明細報告]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r53fcb0cb5f04}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="2" y="55" width="799" height="1" uuid="33569f74-fee4-43c9-9bfe-b6bf7e12ecd4"> <reportElement x="2" y="55" width="799" height="1" uuid="33569f74-fee4-43c9-9bfe-b6bf7e12ecd4">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -171,7 +171,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="416" y="60" width="50" height="32" uuid="75d5ce02-8001-4f6f-85ae-88c6c21c038a"> <reportElement x="416" y="60" width="50" height="32" uuid="75d5ce02-8001-4f6f-85ae-88c6c21c038a">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -179,9 +179,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[入庫]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7e6f86ce8a6b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="704" y="60" width="94" height="32" uuid="bb54ccd3-e003-4eba-9d95-d2c9c84767a5"> <reportElement x="704" y="60" width="94" height="32" uuid="bb54ccd3-e003-4eba-9d95-d2c9c84767a5">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -190,9 +190,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[存貨位置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7eac0bb11fb9}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="159" y="60" width="125" height="32" uuid="1a37e08c-8c54-462f-9a2d-876fc665cdba"> <reportElement x="159" y="60" width="125" height="32" uuid="1a37e08c-8c54-462f-9a2d-876fc665cdba">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -201,9 +201,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[批號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1efbb116be18}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="11" y="60" width="78" height="32" uuid="29d7c8b3-689f-46c6-8283-ebc81c12e3b9"> <reportElement x="11" y="60" width="78" height="32" uuid="29d7c8b3-689f-46c6-8283-ebc81c12e3b9">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -212,9 +212,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[出入賬日期]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r6ba3e4fc4ed5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="524" y="60" width="66" height="32" uuid="12c55779-4875-4d8b-914c-9bbf4dcd64ff"> <reportElement x="524" y="60" width="66" height="32" uuid="12c55779-4875-4d8b-914c-9bbf4dcd64ff">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -222,9 +222,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[纍計存量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r832e34b15e49}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="592" y="60" width="112" height="32" uuid="19e06f3b-0c2a-4e9e-b436-79c21d497ebb"> <reportElement x="592" y="60" width="112" height="32" uuid="19e06f3b-0c2a-4e9e-b436-79c21d497ebb">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -232,9 +232,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[參考編號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r9e0c52c95eed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="466" y="60" width="50" height="32" uuid="86dcb3cb-197d-458e-9530-d2f4de6e5980"> <reportElement x="466" y="60" width="50" height="32" uuid="86dcb3cb-197d-458e-9530-d2f4de6e5980">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -243,9 +243,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[出庫]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r62feaa72467a}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="97" y="60" width="62" height="32" uuid="8fde28bc-907f-406e-9efc-b1e2ff54d819"> <reportElement x="97" y="60" width="62" height="32" uuid="8fde28bc-907f-406e-9efc-b1e2ff54d819">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -254,9 +254,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[類型]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r469fb16b34e6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="359" y="60" width="57" height="32" uuid="9bfc6cdc-28da-4533-a349-5951fd3bdb8d"> <reportElement x="359" y="60" width="57" height="32" uuid="9bfc6cdc-28da-4533-a349-5951fd3bdb8d">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -264,10 +264,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[纍計期初
存量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r63c7976d4b5b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="284" y="60" width="75" height="32" uuid="42332f71-1b1f-4cef-a8c8-c2e66f125cb7"> <reportElement x="284" y="60" width="75" height="32" uuid="42332f71-1b1f-4cef-a8c8-c2e66f125cb7">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -275,8 +274,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement x="2" y="93" width="799" height="1" uuid="25601617-e2c7-4daf-829d-4525fdde0b6a"> <reportElement x="2" y="93" width="799" height="1" uuid="25601617-e2c7-4daf-829d-4525fdde0b6a">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -296,7 +295,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="670" y="29" width="68" height="23" uuid="743080b7-0b92-48b8-8a24-5fb93fb1a88d"> <reportElement x="670" y="29" width="68" height="23" uuid="743080b7-0b92-48b8-8a24-5fb93fb1a88d">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -304,8 +303,8 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告時間:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression>
</textField>
<staticText> <staticText>
<reportElement x="747" y="0" width="21" height="23" uuid="98c8e822-fec6-445a-9d58-93bfb137f220"> <reportElement x="747" y="0" width="21" height="23" uuid="98c8e822-fec6-445a-9d58-93bfb137f220">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
@@ -331,7 +330,7 @@
<textElement textAlignment="Center" verticalAlignment="Middle"/> <textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="836037e7-c4d4-40ac-a079-aefcf0bac275"> <reportElement x="10" y="30" width="90" height="23" uuid="836037e7-c4d4-40ac-a079-aefcf0bac275">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -339,9 +338,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="8beee270-4955-4bd8-b315-814bea3661e0"> <reportElement x="677" y="0" width="40" height="23" uuid="8beee270-4955-4bd8-b315-814bea3661e0">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -349,8 +348,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
</band> </band>
</pageHeader> </pageHeader>
<detail> <detail>


+ 37
- 37
src/main/resources/jasper/StockTakeVarianceReport.jrxml Ver ficheiro

@@ -152,7 +152,7 @@
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="290" y="0" width="220" height="23" uuid="ae59d134-591e-4212-b594-6388bc15e629"> <reportElement x="290" y="0" width="220" height="23" uuid="ae59d134-591e-4212-b594-6388bc15e629">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -160,8 +160,8 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="16" isBold="true"/> <font fontName="微軟正黑體" size="16" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[庫存盤點報告]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r4d7049a1bca9}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="717" y="0" width="30" height="23" uuid="2b671e24-ab30-4c72-8d3c-0e68a7b7cb36"> <reportElement x="717" y="0" width="30" height="23" uuid="2b671e24-ab30-4c72-8d3c-0e68a7b7cb36">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -181,7 +181,7 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<textFieldExpression><![CDATA[($P{stockTakeFilterCaption} != null && !$P{stockTakeFilterCaption}.isEmpty()) ? $P{stockTakeFilterCaption} : ($P{stockTakeDateStart} + " 至 " + $P{stockTakeDateEnd})]]></textFieldExpression>
<textFieldExpression><![CDATA[($P{stockTakeFilterCaption} != null && !$P{stockTakeFilterCaption}.isEmpty()) ? $P{stockTakeFilterCaption} : ($P{stockTakeDateStart} + $R{r9f96f7e891cd} + $P{stockTakeDateEnd})]]></textFieldExpression>
</textField> </textField>
<staticText> <staticText>
<reportElement x="747" y="0" width="21" height="23" uuid="5a1b4b58-b7b1-48c9-b229-7e96392c6425"> <reportElement x="747" y="0" width="21" height="23" uuid="5a1b4b58-b7b1-48c9-b229-7e96392c6425">
@@ -211,7 +211,7 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{stockTakeConditionLabel}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{stockTakeConditionLabel}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="30" width="90" height="23" uuid="0628b331-5736-4f93-bed3-2278011456aa"> <reportElement x="10" y="30" width="90" height="23" uuid="0628b331-5736-4f93-bed3-2278011456aa">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -219,9 +219,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12" isBold="true"/> <font fontName="微軟正黑體" size="12" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[報告日期:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="677" y="0" width="40" height="23" uuid="db6e3fb3-b375-497b-bfc2-1795ec7ecefb"> <reportElement x="677" y="0" width="40" height="23" uuid="db6e3fb3-b375-497b-bfc2-1795ec7ecefb">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -229,13 +229,13 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[頁數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression>
</textField>
</band> </band>
</pageHeader> </pageHeader>
<columnHeader> <columnHeader>
<band height="20"> <band height="20">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="10" y="1" width="100" height="18" isPrintInFirstWholeBand="true" uuid="12b01171-4800-444d-b50a-e9b204f526a7"> <reportElement isPrintRepeatedValues="false" x="10" y="1" width="100" height="18" isPrintInFirstWholeBand="true" uuid="12b01171-4800-444d-b50a-e9b204f526a7">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -244,9 +244,9 @@
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[批號]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r1efbb116be18}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="110" y="1" width="98" height="18" isPrintInFirstWholeBand="true" uuid="8d6b48f0-38f2-45b9-b306-9e7c81b99d5f"> <reportElement isPrintRepeatedValues="false" x="110" y="1" width="98" height="18" isPrintInFirstWholeBand="true" uuid="8d6b48f0-38f2-45b9-b306-9e7c81b99d5f">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -255,9 +255,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[到期日]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="324" y="1" width="64" height="18" isPrintInFirstWholeBand="true" uuid="38b97df1-2013-4b2d-a48d-06015c159953"> <reportElement isPrintRepeatedValues="false" x="324" y="1" width="64" height="18" isPrintInFirstWholeBand="true" uuid="38b97df1-2013-4b2d-a48d-06015c159953">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -266,9 +266,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[盤點前存量]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r5f2d6fed3a7d}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="208" y="1" width="110" height="18" isPrintInFirstWholeBand="true" uuid="e95a755d-4ecb-4900-ac9a-3a6e3b9b3470"> <reportElement isPrintRepeatedValues="false" x="208" y="1" width="110" height="18" isPrintInFirstWholeBand="true" uuid="e95a755d-4ecb-4900-ac9a-3a6e3b9b3470">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -277,9 +277,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[存貨位置]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r7eac0bb11fb9}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="688" y="1" width="110" height="18" isPrintInFirstWholeBand="true" uuid="12a99c2d-6eb7-44c3-b442-37a89be3fe15"> <reportElement isPrintRepeatedValues="false" x="688" y="1" width="110" height="18" isPrintInFirstWholeBand="true" uuid="12a99c2d-6eb7-44c3-b442-37a89be3fe15">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -288,9 +288,9 @@
<textElement textAlignment="Center" verticalAlignment="Middle"> <textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[審核時間]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r2d36c3ab208f}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="520" y="1" width="82" height="18" isPrintInFirstWholeBand="true" uuid="921c16b3-172b-43b9-a090-24d2ee88a1b2"> <reportElement isPrintRepeatedValues="false" x="520" y="1" width="82" height="18" isPrintInFirstWholeBand="true" uuid="921c16b3-172b-43b9-a090-24d2ee88a1b2">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -299,9 +299,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[盤盈虧百分比]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rbad7c57898bb}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="461" y="1" width="59" height="18" isPrintInFirstWholeBand="true" uuid="5dfc210f-b576-472b-a8a2-9db870c19b92"> <reportElement isPrintRepeatedValues="false" x="461" y="1" width="59" height="18" isPrintInFirstWholeBand="true" uuid="5dfc210f-b576-472b-a8a2-9db870c19b92">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -310,9 +310,9 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[盤盈虧]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r4876d5589e5b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="388" y="1" width="72" height="18" isPrintInFirstWholeBand="true" uuid="1590e6c1-5f5a-46ca-84ae-a45e2d4c5a0b"> <reportElement isPrintRepeatedValues="false" x="388" y="1" width="72" height="18" isPrintInFirstWholeBand="true" uuid="1590e6c1-5f5a-46ca-84ae-a45e2d4c5a0b">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -321,14 +321,14 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[盤點數]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rcfb0ffd45d73}]]></textFieldExpression>
</textField>
<line> <line>
<reportElement isPrintRepeatedValues="false" x="0" y="19" width="800" height="1" isPrintInFirstWholeBand="true" uuid="8bdc6e64-fc14-4fee-bfd3-f2e68abdc606"> <reportElement isPrintRepeatedValues="false" x="0" y="19" width="800" height="1" isPrintInFirstWholeBand="true" uuid="8bdc6e64-fc14-4fee-bfd3-f2e68abdc606">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
</line> </line>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement isPrintRepeatedValues="false" x="602" y="1" width="86" height="18" isPrintInFirstWholeBand="true" uuid="0b8d0574-7a70-46f4-a622-384e0c32f0de"> <reportElement isPrintRepeatedValues="false" x="602" y="1" width="86" height="18" isPrintInFirstWholeBand="true" uuid="0b8d0574-7a70-46f4-a622-384e0c32f0de">
<property name="com.jaspersoft.studio.unit.y" value="px"/> <property name="com.jaspersoft.studio.unit.y" value="px"/>
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -337,8 +337,8 @@
<textElement textAlignment="Right" verticalAlignment="Middle"> <textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10"/> <font fontName="微軟正黑體" size="10"/>
</textElement> </textElement>
<text><![CDATA[類型]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r469fb16b34e6}]]></textFieldExpression>
</textField>
</band> </band>
</columnHeader> </columnHeader>
<detail> <detail>


+ 24
- 24
src/main/resources/qrCodeLabel/poItemPDF.jrxml Ver ficheiro

@@ -38,20 +38,20 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="14" width="80" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/> <reportElement x="10" y="14" width="80" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/>
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[批次編號:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="42" width="80" height="16" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/> <reportElement x="10" y="42" width="80" height="16" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/>
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[供應商:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="90" y="42" width="150" height="16" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"> <reportElement x="90" y="42" width="150" height="16" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -62,13 +62,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="97" width="80" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/> <reportElement x="10" y="97" width="80" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/>
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[物料編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r3a4716a37bef}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="90" y="97" width="150" height="16" uuid="1f289946-b945-4f79-8515-212368b8be3b"> <reportElement x="90" y="97" width="150" height="16" uuid="1f289946-b945-4f79-8515-212368b8be3b">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -79,13 +79,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{itemNo}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{itemNo}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="163" width="80" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/> <reportElement x="10" y="163" width="80" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/>
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression>
</textField>
<textField textAdjust="StretchHeight"> <textField textAdjust="StretchHeight">
<reportElement x="90" y="163" width="150" height="16" uuid="629d9af8-c73f-4614-ba9d-a582e2ed4a29"> <reportElement x="90" y="163" width="150" height="16" uuid="629d9af8-c73f-4614-ba9d-a582e2ed4a29">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -103,15 +103,15 @@
</reportElement> </reportElement>
<imageExpression><![CDATA[$F{qrCode}]]></imageExpression> <imageExpression><![CDATA[$F{qrCode}]]></imageExpression>
</image> </image>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="209" width="80" height="16" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"> <reportElement x="10" y="209" width="80" height="16" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
</reportElement> </reportElement>
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[收貨日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="90" y="209" width="150" height="16" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"> <reportElement x="90" y="209" width="150" height="16" uuid="74a5cfba-046d-42f4-92d7-113729514a6f">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -122,13 +122,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="70" width="80" height="16" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/> <reportElement x="10" y="70" width="80" height="16" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/>
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[採購訂單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="90" y="70" width="150" height="16" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"> <reportElement x="90" y="70" width="150" height="16" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>
@@ -139,13 +139,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$P{poCode}]]></textFieldExpression> <textFieldExpression><![CDATA[$P{poCode}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="125" width="80" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/> <reportElement x="10" y="125" width="80" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/>
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[物料名稱:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression>
</textField>
<textField textAdjust="StretchHeight"> <textField textAdjust="StretchHeight">
<reportElement x="90" y="125" width="150" height="16" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"> <reportElement x="90" y="125" width="150" height="16" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab">
<property name="com.jaspersoft.studio.unit.width" value="px"/> <property name="com.jaspersoft.studio.unit.width" value="px"/>
@@ -156,13 +156,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{itemName}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{itemName}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="10" y="237" width="80" height="16" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/> <reportElement x="10" y="237" width="80" height="16" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/>
<textElement textAlignment="Left"> <textElement textAlignment="Left">
<font fontName="微軟正黑體" size="12"/> <font fontName="微軟正黑體" size="12"/>
</textElement> </textElement>
<text><![CDATA[到期日:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression>
</textField>
<textField> <textField>
<reportElement x="90" y="237" width="150" height="16" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"> <reportElement x="90" y="237" width="150" height="16" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2">
<property name="com.jaspersoft.studio.unit.height" value="px"/> <property name="com.jaspersoft.studio.unit.height" value="px"/>


+ 24
- 24
src/main/resources/qrCodeLabel/poItemPDF_v2.jrxml Ver ficheiro

@@ -30,13 +30,13 @@
</background> </background>
<detail> <detail>
<band height="279" splitType="Prevent"> <band height="279" splitType="Prevent">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="0" width="108" height="56" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"/> <reportElement x="8" y="0" width="108" height="56" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="18" isBold="true"/> <font fontName="微軟正黑體" size="18" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[收貨日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="116" y="0" width="301" height="56" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/> <reportElement x="116" y="0" width="301" height="56" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -44,13 +44,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="56" width="108" height="56" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/> <reportElement x="8" y="56" width="108" height="56" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="18" isBold="true"/> <font fontName="微軟正黑體" size="18" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[到期日:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="116" y="56" width="301" height="56" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/> <reportElement x="116" y="56" width="301" height="56" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -58,13 +58,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="114" width="230" height="18" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/> <reportElement x="8" y="114" width="230" height="18" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[批次編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="132" width="230" height="20" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/> <reportElement x="8" y="132" width="230" height="20" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -72,20 +72,20 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="152" width="108" height="18" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/> <reportElement x="8" y="152" width="108" height="18" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[物料編號:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3a4716a37bef}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="120" y="152" width="118" height="18" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/> <reportElement x="120" y="152" width="118" height="18" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="170" width="108" height="28" uuid="1f289946-b945-4f79-8515-212368b8be3b"/> <reportElement x="8" y="170" width="108" height="28" uuid="1f289946-b945-4f79-8515-212368b8be3b"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -109,13 +109,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="200" width="230" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/> <reportElement x="8" y="200" width="230" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[物料名稱:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="216" width="230" height="30" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/> <reportElement x="8" y="216" width="230" height="30" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -127,13 +127,13 @@
<reportElement x="248" y="112" width="166" height="166" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/> <reportElement x="248" y="112" width="166" height="166" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/>
<imageExpression><![CDATA[$F{qrCode}]]></imageExpression> <imageExpression><![CDATA[$F{qrCode}]]></imageExpression>
</image> </image>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="248" width="42" height="14" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/> <reportElement x="8" y="248" width="42" height="14" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/> <font fontName="微軟正黑體" size="8"/>
</textElement> </textElement>
<text><![CDATA[供應商:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="50" y="248" width="188" height="14" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/> <reportElement x="50" y="248" width="188" height="14" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
@@ -141,13 +141,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="262" width="76" height="14" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/> <reportElement x="8" y="262" width="76" height="14" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/> <font fontName="微軟正黑體" size="8"/>
</textElement> </textElement>
<text><![CDATA[採購訂單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="84" y="262" width="154" height="14" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/> <reportElement x="84" y="262" width="154" height="14" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">


+ 24
- 24
src/main/resources/qrCodeLabel/poItemPDF_v3.jrxml Ver ficheiro

@@ -30,13 +30,13 @@
</background> </background>
<detail> <detail>
<band height="279" splitType="Prevent"> <band height="279" splitType="Prevent">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="0" width="108" height="56" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"/> <reportElement x="8" y="0" width="108" height="56" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="18" isBold="true"/> <font fontName="微軟正黑體" size="18" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[收貨日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="116" y="0" width="301" height="56" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/> <reportElement x="116" y="0" width="301" height="56" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -44,13 +44,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="56" width="108" height="56" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/> <reportElement x="8" y="56" width="108" height="56" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="18" isBold="true"/> <font fontName="微軟正黑體" size="18" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[到期日:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="116" y="56" width="301" height="56" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/> <reportElement x="116" y="56" width="301" height="56" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -58,13 +58,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="114" width="286" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/> <reportElement x="8" y="114" width="286" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[批次編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="130" width="286" height="20" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/> <reportElement x="8" y="130" width="286" height="20" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -72,20 +72,20 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="152" width="140" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/> <reportElement x="8" y="152" width="140" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[物料編號:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3a4716a37bef}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="152" y="152" width="142" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/> <reportElement x="152" y="152" width="142" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="168" width="140" height="26" uuid="1f289946-b945-4f79-8515-212368b8be3b"/> <reportElement x="8" y="168" width="140" height="26" uuid="1f289946-b945-4f79-8515-212368b8be3b"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -109,13 +109,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="200" width="290" height="18" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/> <reportElement x="8" y="200" width="290" height="18" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[物料名稱:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="218" width="290" height="58" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/> <reportElement x="8" y="218" width="290" height="58" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -127,13 +127,13 @@
<reportElement x="308" y="116" width="108" height="108" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/> <reportElement x="308" y="116" width="108" height="108" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/>
<imageExpression><![CDATA[$F{qrCode}]]></imageExpression> <imageExpression><![CDATA[$F{qrCode}]]></imageExpression>
</image> </image>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="308" y="226" width="108" height="12" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/> <reportElement x="308" y="226" width="108" height="12" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/> <font fontName="微軟正黑體" size="8"/>
</textElement> </textElement>
<text><![CDATA[供應商:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="308" y="238" width="108" height="14" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/> <reportElement x="308" y="238" width="108" height="14" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
@@ -141,13 +141,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="308" y="252" width="108" height="12" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/> <reportElement x="308" y="252" width="108" height="12" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/> <font fontName="微軟正黑體" size="8"/>
</textElement> </textElement>
<text><![CDATA[採購訂單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="308" y="264" width="108" height="14" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/> <reportElement x="308" y="264" width="108" height="14" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">


+ 24
- 24
src/main/resources/qrCodeLabel/poItemPDF_v4.jrxml Ver ficheiro

@@ -30,13 +30,13 @@
</background> </background>
<detail> <detail>
<band height="279" splitType="Prevent"> <band height="279" splitType="Prevent">
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="4" y="0" width="222" height="16" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"/> <reportElement x="4" y="0" width="222" height="16" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="11" isBold="true"/> <font fontName="微軟正黑體" size="11" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[收貨日期:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="4" y="16" width="222" height="52" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/> <reportElement x="4" y="16" width="222" height="52" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -44,13 +44,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="4" y="70" width="222" height="16" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/> <reportElement x="4" y="70" width="222" height="16" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="11" isBold="true"/> <font fontName="微軟正黑體" size="11" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[到期日:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="4" y="86" width="222" height="52" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/> <reportElement x="4" y="86" width="222" height="52" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -58,20 +58,20 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="142" width="104" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/> <reportElement x="8" y="142" width="104" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[物料編號:]]></text>
</staticText>
<staticText>
<textFieldExpression><![CDATA[$R{r3a4716a37bef}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="130" y="142" width="96" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/> <reportElement x="130" y="142" width="96" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[數量:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="158" width="118" height="34" uuid="1f289946-b945-4f79-8515-212368b8be3b"/> <reportElement x="8" y="158" width="118" height="34" uuid="1f289946-b945-4f79-8515-212368b8be3b"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -95,13 +95,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="196" width="218" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/> <reportElement x="8" y="196" width="218" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[物料名稱:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="8" y="212" width="218" height="64" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/> <reportElement x="8" y="212" width="218" height="64" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -113,13 +113,13 @@
<reportElement x="230" y="4" width="190" height="190" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/> <reportElement x="230" y="4" width="190" height="190" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/>
<imageExpression><![CDATA[$F{qrCode}]]></imageExpression> <imageExpression><![CDATA[$F{qrCode}]]></imageExpression>
</image> </image>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="196" width="190" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/> <reportElement x="230" y="196" width="190" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="10" isBold="true"/> <font fontName="微軟正黑體" size="10" isBold="true"/>
</textElement> </textElement>
<text><![CDATA[批次編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="212" width="190" height="26" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/> <reportElement x="230" y="212" width="190" height="26" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
@@ -127,13 +127,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="240" width="42" height="16" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/> <reportElement x="230" y="240" width="42" height="16" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/> <font fontName="微軟正黑體" size="8"/>
</textElement> </textElement>
<text><![CDATA[供應商:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="272" y="240" width="148" height="16" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/> <reportElement x="272" y="240" width="148" height="16" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">
@@ -141,13 +141,13 @@
</textElement> </textElement>
<textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression>
</textField> </textField>
<staticText>
<textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="230" y="258" width="72" height="16" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/> <reportElement x="230" y="258" width="72" height="16" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/>
<textElement textAlignment="Left" verticalAlignment="Middle"> <textElement textAlignment="Left" verticalAlignment="Middle">
<font fontName="微軟正黑體" size="8"/> <font fontName="微軟正黑體" size="8"/>
</textElement> </textElement>
<text><![CDATA[採購訂單編號:]]></text>
</staticText>
<textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression>
</textField>
<textField textAdjust="ScaleFont" isBlankWhenNull="true"> <textField textAdjust="ScaleFont" isBlankWhenNull="true">
<reportElement x="302" y="258" width="118" height="16" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/> <reportElement x="302" y="258" width="118" height="16" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/>
<textElement verticalAlignment="Middle"> <textElement verticalAlignment="Middle">


Carregando…
Cancelar
Guardar