| @@ -10,10 +10,13 @@ import java.util.List; | |||
| import net.sf.jasperreports.engine.JRDataSource; | |||
| import net.sf.jasperreports.engine.JREmptyDataSource; | |||
| import net.sf.jasperreports.engine.JRParameter; | |||
| import net.sf.jasperreports.engine.JasperFillManager; | |||
| import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; | |||
| import net.sf.jasperreports.engine.data.JRMapCollectionDataSource; | |||
| import java.util.HashMap; | |||
| public class PdfUtils { | |||
| public static JasperReport loadJasperReport(String path) throws Exception { | |||
| @@ -34,7 +37,12 @@ public class PdfUtils { | |||
| } else { | |||
| 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; | |||
| } | |||
| @@ -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) | |||
| } | |||
| } | |||
| @@ -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 | |||
| } | |||
| @@ -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; | |||
| } | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.jobOrder.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.core.support.JdbcDao | |||
| import com.ffii.fpsms.modules.jobOrder.entity.OnPackTemplateFile | |||
| 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 { | |||
| val machine = normalizeMachine(machineRaw) | |||
| 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>() | |||
| files.forEach { part -> | |||
| if (part.isEmpty) return@forEach | |||
| val original = part.originalFilename ?: part.name | |||
| val storedName = storedFileName(machine, itemCode, original) | |||
| 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 { | |||
| repository.findByMachineAndItemCodeIgnoreCaseAndFileNameIgnoreCase( | |||
| machine, | |||
| @@ -88,7 +90,7 @@ open class OnPackTemplateFileService( | |||
| } | |||
| } catch (e: DataAccessException) { | |||
| 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, | |||
| ) | |||
| } | |||
| @@ -102,13 +104,13 @@ open class OnPackTemplateFileService( | |||
| repository.save(row) | |||
| } catch (e: DataAccessException) { | |||
| 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, | |||
| ) | |||
| } | |||
| saved.add(storedName) | |||
| } | |||
| require(saved.isNotEmpty()) { "沒有可儲存的檔案" } | |||
| require(saved.isNotEmpty()) { UiText.t("沒有可儲存的檔案", "There is no file to save") } | |||
| try { | |||
| ensureOnPackQrRow(itemCode, machine, saved) | |||
| } catch (e: DataAccessException) { | |||
| @@ -120,10 +122,10 @@ open class OnPackTemplateFileService( | |||
| @Transactional | |||
| open fun softDelete(id: Long) { | |||
| val row = try { | |||
| repository.findById(id).orElseThrow { IllegalArgumentException("找不到該模板檔") } | |||
| repository.findById(id).orElseThrow { IllegalArgumentException(UiText.t("找不到該模板檔", "Template file not found")) } | |||
| } catch (e: DataAccessException) { | |||
| 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, | |||
| ) | |||
| } | |||
| @@ -241,7 +243,7 @@ open class OnPackTemplateFileService( | |||
| mapOf("machine" to machine, "code" to itemCode), | |||
| ) | |||
| } 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) { | |||
| val row = existing.get() | |||
| @@ -285,10 +287,10 @@ open class OnPackTemplateFileService( | |||
| mapOf("machine" to machine, "code" to itemCode, "printName" to stored), | |||
| ) | |||
| if (n == 0) { | |||
| throw IllegalArgumentException("清單中沒有 $itemCode") | |||
| throw IllegalArgumentException(UiText.t("清單中沒有 ", "Item code is not in the list: ") + itemCode) | |||
| } | |||
| } 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) { | |||
| @@ -311,7 +313,7 @@ open class OnPackTemplateFileService( | |||
| mapOf("machine" to machine, "code" to itemCode), | |||
| ) | |||
| } 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) { | |||
| MACHINE_JUICE, "bmp", "onpack2030", "汁水機" -> MACHINE_JUICE | |||
| 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 { | |||
| val code = raw.trim().uppercase() | |||
| require(ITEM_CODE.matches(code)) { "品號格式不正確:$raw" } | |||
| require(ITEM_CODE.matches(code)) { UiText.t("品號格式不正確:", "Invalid item code: ") + raw } | |||
| return code | |||
| } | |||
| @@ -520,7 +522,7 @@ open class OnPackTemplateFileService( | |||
| fun storedFileName(machine: String, itemCode: String, originalName: String): String { | |||
| 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)) { | |||
| if (machine == MACHINE_LEMON) "${itemCode.uppercase()}.image" | |||
| else "${itemCode.lowercase()}.image" | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.jobOrder.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.core.support.JdbcDao | |||
| import com.ffii.fpsms.modules.common.SettingNames | |||
| import com.ffii.fpsms.modules.jobOrder.entity.JobOrder | |||
| @@ -348,7 +350,7 @@ class PlasticBagPrinterService( | |||
| logger.error("sendLaserBag2Job unexpected error", e) | |||
| LaserBag2SendResponse( | |||
| 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)) { | |||
| return LaserBag2TcpResult( | |||
| false, | |||
| "檸檬機回覆 invalid,未接受指令。", | |||
| UiText.t("檸檬機回覆 invalid,未接受指令。", "The lemon printer replied invalid and did not accept the command."), | |||
| payload, | |||
| ackRaw, | |||
| false, | |||
| ) | |||
| } | |||
| val msg = if (receiveAck) { | |||
| "已送出激光機:$payload(已確認)" | |||
| UiText.t("已送出激光機:", "Sent to the laser printer: ") + payload + UiText.t("(已確認)", " (confirmed)") | |||
| } else { | |||
| "已送出激光機:$payload" | |||
| UiText.t("已送出激光機:", "Sent to the laser printer: ") + payload | |||
| } | |||
| return LaserBag2TcpResult(true, msg, payload, ackRaw, receiveAck) | |||
| } 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) { | |||
| 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) { | |||
| return LaserBag2TcpResult(false, "激光機送出失敗:${e.message}", payload, null, false) | |||
| return LaserBag2TcpResult(false, UiText.t("激光機送出失敗:", "Laser printer send failed: ") + (e.message), payload, null, false) | |||
| } finally { | |||
| try { | |||
| Thread.sleep(100) | |||
| @@ -590,9 +592,9 @@ class PlasticBagPrinterService( | |||
| } | |||
| return raw to null | |||
| } catch (e: ConnectException) { | |||
| return null to "無法連線" | |||
| return null to UiText.t("無法連線", "Could not connect") | |||
| } catch (e: SocketTimeoutException) { | |||
| return null to "讀取逾時" | |||
| return null to UiText.t("讀取逾時", "Read timed out") | |||
| } catch (e: Exception) { | |||
| return null to (e.message ?: e.javaClass.simpleName) | |||
| } finally { | |||
| @@ -611,9 +613,9 @@ class PlasticBagPrinterService( | |||
| } | |||
| 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 | |||
| } | |||
| @@ -770,7 +772,7 @@ class PlasticBagPrinterService( | |||
| .mapNotNull { (it["jobOrderId"] as? Number)?.toLong() } | |||
| .toSet() | |||
| 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) { | |||
| onPackTemplateFileService.expiryPrintNames(OnPackTemplateFileService.MACHINE_JUICE) | |||
| @@ -820,7 +822,7 @@ class PlasticBagPrinterService( | |||
| require(exportItemsListed.isNotEmpty()) { | |||
| 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 { | |||
| "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()) { | |||
| 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) { | |||
| "當日工單沒有在汁水機到期日 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 { | |||
| "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 expiryMasterJob = if (includeExpiry) loadPp1181MasterJob() else null | |||
| 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() | |||
| @@ -1013,7 +1015,7 @@ class PlasticBagPrinterService( | |||
| .mapNotNull { (it["jobOrderId"] as? Number)?.toLong() } | |||
| .toSet() | |||
| 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 | |||
| .groupBy { it.itemCode.trim().lowercase() } | |||
| @@ -1053,7 +1055,7 @@ class PlasticBagPrinterService( | |||
| require(exportItems.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 { | |||
| "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 { | |||
| Socket().use { socket -> | |||
| socket.connect(InetSocketAddress(ip, port), 3000) | |||
| true to "$printerName 已連線($ip:$port)" | |||
| true to printerName + UiText.t(" 已連線(", " is connected (") + ip + ":" + port + ")" | |||
| } | |||
| } catch (e: SocketTimeoutException) { | |||
| false to "$printerName 連線逾時($ip:$port)" | |||
| false to printerName + UiText.t(" 連線逾時(", " timed out (") + ip + ":" + port + ")" | |||
| } catch (e: ConnectException) { | |||
| false to "$printerName 無法連線($ip:$port)" | |||
| false to printerName + UiText.t(" 無法連線(", " could not connect (") + ip + ":" + port + ")" | |||
| } 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 | |||
| 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 { | |||
| soTimeout = 8000 // 8秒超時,避免卡死 | |||
| } | |||
| @@ -1734,7 +1736,7 @@ class PlasticBagPrinterService( | |||
| Thread.sleep(300) // give device time to process | |||
| val resp = reader.readLine()?.trim() ?: "" | |||
| println("命令: $cmd → 回應: $resp") | |||
| println(UiText.t("命令: ", "Command: ") + cmd + UiText.t(" → 回應: ", " → response: ") + resp) | |||
| return resp.startsWith("OK") | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.jobOrder.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.core.support.JdbcDao | |||
| import org.springframework.stereotype.Service | |||
| import java.time.DayOfWeek | |||
| @@ -132,13 +134,13 @@ open class PsScheduleRuleService( | |||
| } | |||
| 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(SAFETY, formatNumber(request.safetyStockDays), "float") | |||
| @@ -163,8 +165,8 @@ open class PsScheduleRuleService( | |||
| if (red != null && safety != null) { | |||
| requireDays(red, safety, itemCode) | |||
| } 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) { | |||
| @@ -257,29 +259,29 @@ open class PsScheduleRuleService( | |||
| } | |||
| 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) { | |||
| throw IllegalArgumentException("$label:觸發日不可大於補貨日") | |||
| throw IllegalArgumentException(label + UiText.t(":觸發日不可大於補貨日", ": trigger days cannot be greater than replenishment days")) | |||
| } | |||
| } | |||
| private fun requirePositive(value: Double, label: String) { | |||
| 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> { | |||
| 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 | |||
| } | |||
| private fun parseDaysStrict(tokens: List<String>, label: String): Set<DayOfWeek> { | |||
| val unknown = tokens.map { it.trim().uppercase() }.filter { it.isNotEmpty() && it !in DAY_TOKENS } | |||
| if (unknown.isNotEmpty()) { | |||
| throw IllegalArgumentException("$label 有無法辨識的星期: ${unknown.joinToString(",")}") | |||
| throw IllegalArgumentException(label + UiText.t(" 有無法辨識的星期: ", " has an unknown weekday: ") + (unknown.joinToString(","))) | |||
| } | |||
| return parseDays(tokens.joinToString(",")) | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| 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.OnPackZipResult | |||
| import com.ffii.fpsms.modules.jobOrder.service.PlasticBagPrinterService | |||
| @@ -72,7 +74,7 @@ class PlasticBagPrinterController( | |||
| logger.error("print-laser-bag2 failed", e) | |||
| LaserBag2SendResponse( | |||
| success = false, | |||
| message = "送出失敗:${e.message ?: e.javaClass.simpleName}", | |||
| message = UiText.t("送出失敗:", "Send failed: ") + (e.message ?: e.javaClass.simpleName), | |||
| ) | |||
| } | |||
| return if (resp.success) { | |||
| @@ -368,18 +370,18 @@ class PlasticBagPrinterController( | |||
| ip = request.printerIp, | |||
| port = request.printerPort.toInt(), | |||
| textChannel3 = request.textChannel3 | |||
| ?: throw IllegalArgumentException("缺少 textChannel3"), | |||
| ?: throw IllegalArgumentException(UiText.t("缺少 textChannel3", "textChannel3 is missing")), | |||
| textChannel4 = request.textChannel4 | |||
| ?: throw IllegalArgumentException("缺少 textChannel4"), | |||
| ?: throw IllegalArgumentException(UiText.t("缺少 textChannel4", "textChannel4 is missing")), | |||
| text3ObjectName = request.text3ObjectName ?: "Text3", | |||
| text4ObjectName = request.text4ObjectName ?: "Text4" | |||
| ) | |||
| 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 { | |||
| 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) { | |||
| ResponseEntity.status(500).body("Laser TCP Error: ${e.message}") | |||
| @@ -1,5 +1,7 @@ | |||
| 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.ItemDefaultShelfLifeRepository | |||
| import com.ffii.fpsms.modules.master.entity.ItemsRepository | |||
| @@ -71,7 +73,7 @@ open class ItemDefaultShelfLifeService( | |||
| val row = repository.findByDeletedFalseAndItemCodeIgnoreCase(code) | |||
| ?: throw ResponseStatusException( | |||
| 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 | |||
| return toRow(repository.save(row)) | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.master.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.core.response.RecordsRes | |||
| import com.ffii.core.support.AbstractBaseEntityService | |||
| import com.ffii.core.support.JdbcDao | |||
| @@ -483,9 +485,9 @@ open class ProductionScheduleService( | |||
| return MessageResponse( | |||
| id = request.id.toLong(), | |||
| message = if (jobOrderCount == 0) | |||
| "沒有建立新工單(可能因為成品已有生產中的工單)." | |||
| UiText.t("沒有建立新工單(可能因為成品已有生產中的工單).", "No job order was created. The finished good may already have a job order in production.") | |||
| else | |||
| "成功建立 $jobOrderCount 張工單!", | |||
| UiText.t("成功建立 ", "Created ") + jobOrderCount + UiText.t(" 張工單!", " job orders."), | |||
| name = "", | |||
| code = jobOrderCount.toString(), | |||
| type = "psJobOrders", | |||
| @@ -1494,8 +1496,8 @@ open class ProductionScheduleService( | |||
| val sheet = workbook.createSheet(safeSheetName) | |||
| 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 | |||
| @@ -1559,13 +1561,13 @@ open class ProductionScheduleService( | |||
| } | |||
| // ── MATERIAL SUMMARY SHEET ── | |||
| val matSheet = workbook.createSheet("物料用量總結") | |||
| val matSheet = workbook.createSheet(UiText.t("物料用量總結", "Material usage summary")) | |||
| 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) | |||
| @@ -1651,7 +1653,7 @@ open class ProductionScheduleService( | |||
| matSheet.setMargin(Sheet.BottomMargin, 0.7) | |||
| // ── 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 dateFormatterDayName = DateTimeFormatter.ofPattern("EEEE", Locale.ENGLISH) | |||
| @@ -1666,7 +1668,7 @@ open class ProductionScheduleService( | |||
| val headerRow1 = dailySheet.createRow(0) | |||
| 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 -> | |||
| headerRow1.createCell(i).apply { setCellValue(title); cellStyle = headerStyle } | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.monitoring.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.core.support.JdbcDao | |||
| import com.ffii.fpsms.modules.master.entity.Printer | |||
| import com.ffii.fpsms.modules.master.entity.PrinterRepository | |||
| @@ -395,7 +397,7 @@ open class LabelPrinterMonitorService( | |||
| private fun probeTcp(ip: String, port: Int): ProbeResult { | |||
| 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() | |||
| return try { | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.monitoring.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.core.support.JdbcDao | |||
| import com.ffii.fpsms.modules.master.entity.Printer | |||
| import com.ffii.fpsms.modules.master.entity.PrinterRepository | |||
| @@ -208,7 +210,7 @@ open class PrinterMonitorService( | |||
| status = "unconfigured", | |||
| reachable = null, | |||
| latencyMs = null, | |||
| errorMessage = "未設定 IP", | |||
| errorMessage = UiText.t("未設定 IP", "IP address is not set"), | |||
| ) | |||
| } | |||
| val port = printer.port ?: defaultPort | |||
| @@ -1,5 +1,6 @@ | |||
| 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.support.isOptimisticLockFailure | |||
| import com.ffii.fpsms.modules.pickOrder.web.models.CreateTruckLaneSnapshotRequest | |||
| @@ -75,7 +76,7 @@ open class TruckLaneScheduleApplier( | |||
| truckLaneVersionService.createSnapshot( | |||
| CreateTruckLaneSnapshotRequest( | |||
| truckLanceCode = null, | |||
| note = "排程 #${schedule.id} 套用前快照 ${schedule.executeAt}", | |||
| note = UiText.t("排程 #", "Schedule #") + (schedule.id) + UiText.t(" 套用前快照 ", " pre-apply snapshot ") + (schedule.executeAt), | |||
| createdBy = schedule.createdBy, | |||
| ), | |||
| ) | |||
| @@ -99,11 +100,11 @@ open class TruckLaneScheduleApplier( | |||
| truckLaneVersionService.createSnapshot( | |||
| CreateTruckLaneSnapshotRequest( | |||
| truckLanceCode = null, | |||
| note = "排程 #${schedule.id} 套用 (${ | |||
| note = UiText.t("排程 #", "Schedule #") + (schedule.id) + UiText.t(" 套用 (", " applied (") + ( | |||
| lines.count { | |||
| it.lineStatus == TruckLaneScheduleLineStatus.APPLIED | |||
| } | |||
| } 列) ${schedule.executeAt}", | |||
| ) + UiText.t(" 列) ", " rows) ") + (schedule.executeAt), | |||
| createdBy = schedule.createdBy, | |||
| ), | |||
| ) | |||
| @@ -262,7 +263,7 @@ open class TruckLaneScheduleApplier( | |||
| val restoreSuffix = | |||
| if (preApplySnapshotId != null) { | |||
| ";已還原 snapshot #$preApplySnapshotId${restoreNote?.let { " ($it)" } ?: ""}" | |||
| UiText.t(";已還原 snapshot #", "; restored snapshot #") + preApplySnapshotId + (restoreNote?.let { " ($it)" } ?: "") | |||
| } else { | |||
| "" | |||
| } | |||
| @@ -310,7 +311,7 @@ open class TruckLaneScheduleApplier( | |||
| private fun applyEnsureLane(line: TruckLaneScheduleLine): String? { | |||
| val toKey = truckService.toBucketKey(line) | |||
| if (truckService.trucksInLaneBucket(toKey).isNotEmpty()) { | |||
| return "車線已存在,跳過建立" | |||
| return UiText.t("車線已存在,跳過建立", "Truck lane already exists. Creation was skipped.") | |||
| } | |||
| ensureTargetLaneIfEmpty(line, fallbackDeparture = null) | |||
| return null | |||
| @@ -330,7 +331,7 @@ open class TruckLaneScheduleApplier( | |||
| line.departureTime | |||
| ?: fallbackDeparture | |||
| ?: 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( | |||
| CreateTruckWithoutShopRequest( | |||
| @@ -343,15 +344,15 @@ open class TruckLaneScheduleApplier( | |||
| logisticId = line.logisticId, | |||
| ), | |||
| ) | |||
| return "已自動建立空白車線 ${toKey.truckLanceCode}" | |||
| return UiText.t("已自動建立空白車線 ", "Created a blank truck lane ") + (toKey.truckLanceCode) | |||
| } | |||
| private fun applyCreate( | |||
| line: TruckLaneScheduleLine, | |||
| createdTruckRowIds: MutableList<Long>, | |||
| ): 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 seq = line.toLoadingSequence ?: 0 | |||
| val saved = | |||
| @@ -370,22 +371,22 @@ open class TruckLaneScheduleApplier( | |||
| 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 | |||
| createdTruckRowIds.add(rowId) | |||
| return null | |||
| } | |||
| 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 = | |||
| truckService.findTruckRowByIdIncludingDeleted(truckRowId) | |||
| ?: throw IllegalArgumentException("找不到 truck #$truckRowId") | |||
| ?: throw IllegalArgumentException(UiText.t("找不到 truck #", "Truck not found: #") + truckRowId) | |||
| val notes = mutableListOf<String>() | |||
| if (truck.deleted == true) { | |||
| truck = truckService.restoreTruckRowIfDeleted(truck) | |||
| notes.add("店鋪列已從刪除狀態還原") | |||
| notes.add(UiText.t("店鋪列已從刪除狀態還原", "Restored the shop row")) | |||
| } | |||
| val current = truckService.truckLaneBucketKeyOf(truck) | |||
| @@ -396,7 +397,7 @@ open class TruckLaneScheduleApplier( | |||
| current.storeId != fromStore || | |||
| (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( | |||
| "Schedule line {} truck {} moved from {} to target (was scheduled from {} {})", | |||
| line.id, | |||
| @@ -408,7 +409,7 @@ open class TruckLaneScheduleApplier( | |||
| } | |||
| 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) } | |||
| truckService.applyScheduledTruckMove( | |||
| truckRowId, | |||
| @@ -421,7 +422,7 @@ open class TruckLaneScheduleApplier( | |||
| } | |||
| 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) | |||
| return null | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| 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.pickOrder.entity.Truck | |||
| import com.ffii.fpsms.modules.pickOrder.entity.TruckRepository | |||
| @@ -37,16 +39,16 @@ class TruckLaneScheduleExcelSupport( | |||
| ): Pair<List<TruckLaneScheduleExcelPreviewRow>, List<TruckLaneScheduleExcelRowError>> { | |||
| if (workbook == null || workbook.numberOfSheets == 0) { | |||
| return emptyList<TruckLaneScheduleExcelPreviewRow>() to | |||
| listOf(TruckLaneScheduleExcelRowError(0, "Excel 無工作表")) | |||
| listOf(TruckLaneScheduleExcelRowError(0, UiText.t("Excel 無工作表", "The workbook has no sheets"))) | |||
| } | |||
| val sheet = workbook.getSheetAt(0) | |||
| if (sheet.physicalNumberOfRows < 2) { | |||
| 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 | |||
| listOf(TruckLaneScheduleExcelRowError(0, "缺少標題列")) | |||
| listOf(TruckLaneScheduleExcelRowError(0, UiText.t("缺少標題列", "The header row is missing"))) | |||
| val colIndex = mutableMapOf<String, Int>() | |||
| for (c in 0 until headerRow.lastCellNum) { | |||
| @@ -64,7 +66,7 @@ class TruckLaneScheduleExcelSupport( | |||
| return emptyList<TruckLaneScheduleExcelPreviewRow>() to listOf( | |||
| TruckLaneScheduleExcelRowError( | |||
| 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()) { | |||
| errors.add(TruckLaneScheduleExcelRowError(rowIndex, "ShopID/ShopCode 不可為空")) | |||
| errors.add(TruckLaneScheduleExcelRowError(rowIndex, UiText.t("ShopID/ShopCode 不可為空", "ShopID/ShopCode cannot be empty"))) | |||
| continue | |||
| } | |||
| if (laneRaw.isBlank()) { | |||
| errors.add(TruckLaneScheduleExcelRowError(rowIndex, "TargetLane 不可為空")) | |||
| errors.add(TruckLaneScheduleExcelRowError(rowIndex, UiText.t("TargetLane 不可為空", "TargetLane cannot be empty"))) | |||
| continue | |||
| } | |||
| val truck = resolveTruckByShopCode(shopRaw.trim()) | |||
| if (truck == null) { | |||
| errors.add(TruckLaneScheduleExcelRowError(rowIndex, "找不到店鋪:$shopRaw")) | |||
| errors.add(TruckLaneScheduleExcelRowError(rowIndex, UiText.t("找不到店鋪:", "Shop not found: ") + shopRaw)) | |||
| continue | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| 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.web.models.* | |||
| import org.springframework.transaction.annotation.Transactional | |||
| @@ -25,7 +27,7 @@ open class TruckLaneScheduleService( | |||
| validateExecuteAt(request.executeAt) | |||
| val requestLines = resolveRequestLines(request) | |||
| 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) | |||
| if (blocking.isNotEmpty()) { | |||
| @@ -72,7 +74,7 @@ open class TruckLaneScheduleService( | |||
| note: String?, | |||
| ): List<TruckLaneScheduleResponse> { | |||
| 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 } | |||
| return grouped.map { (executeAt, group) -> | |||
| @@ -135,7 +137,7 @@ open class TruckLaneScheduleService( | |||
| open fun getById(id: Long): TruckLaneScheduleResponse { | |||
| 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) | |||
| } | |||
| @@ -158,9 +160,9 @@ open class TruckLaneScheduleService( | |||
| @Transactional | |||
| open fun cancel(id: Long): TruckLaneScheduleResponse { | |||
| 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) { | |||
| 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 | |||
| val lineList = scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L) | |||
| @@ -172,16 +174,16 @@ open class TruckLaneScheduleService( | |||
| open fun applyNow(id: Long): TruckLaneScheduleResponse { | |||
| return when (scheduleApplier.applyOne(id)) { | |||
| ScheduleApplyOutcome.NOT_FOUND -> | |||
| throw ResponseStatusException(HttpStatus.NOT_FOUND, "排程不存在") | |||
| throw ResponseStatusException(HttpStatus.NOT_FOUND, UiText.t("排程不存在", "Schedule not found")) | |||
| ScheduleApplyOutcome.SKIPPED -> { | |||
| val current = scheduleRepository.findByIdAndDeletedFalse(id) | |||
| val msg = | |||
| when (current?.status) { | |||
| TruckLaneScheduleStatus.APPLYING -> | |||
| "排程正在執行中,請稍後再試" | |||
| UiText.t("排程正在執行中,請稍後再試", "The schedule is running. Try again shortly.") | |||
| 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) | |||
| } | |||
| @@ -197,15 +199,15 @@ open class TruckLaneScheduleService( | |||
| executeAt: LocalDateTime?, | |||
| ): TruckLaneScheduleResponse { | |||
| 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) { | |||
| throw ResponseStatusException( | |||
| 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) { | |||
| throw ResponseStatusException(HttpStatus.BAD_REQUEST, "僅 FAILED 可重試失敗列") | |||
| throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("僅 FAILED 可重試失敗列", "Only a failed schedule can retry failed rows")) | |||
| } | |||
| val lines = | |||
| scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L) | |||
| @@ -215,14 +217,14 @@ open class TruckLaneScheduleService( | |||
| it.lineStatus == TruckLaneScheduleLineStatus.PENDING | |||
| } | |||
| 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) | |||
| validateExecuteAt(whenAt) | |||
| val requestLines = | |||
| retryLines.mapNotNull { line -> lineToRequest(line) } | |||
| 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( | |||
| CreateTruckLaneScheduleRequest( | |||
| @@ -234,7 +236,7 @@ open class TruckLaneScheduleService( | |||
| // 重試排程已接手追蹤,原 FAILED 單標為 IGNORED 以免失敗徽章長亮。 | |||
| s.status = TruckLaneScheduleStatus.IGNORED | |||
| 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) | |||
| return created | |||
| } | |||
| @@ -245,22 +247,22 @@ open class TruckLaneScheduleService( | |||
| executeAt: LocalDateTime?, | |||
| ): TruckLaneScheduleResponse { | |||
| 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) { | |||
| throw ResponseStatusException(HttpStatus.BAD_REQUEST, "僅 CANCELLED 可重新排程") | |||
| throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("僅 CANCELLED 可重新排程", "Only a cancelled schedule can be rescheduled")) | |||
| } | |||
| val lines = | |||
| scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L) | |||
| val reactivatable = | |||
| lines.filter { it.lineStatus == TruckLaneScheduleLineStatus.SKIPPED } | |||
| 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) | |||
| validateExecuteAt(whenAt) | |||
| val requestLines = reactivatable.mapNotNull { line -> lineToRequest(line) } | |||
| 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) | |||
| if (blocking.isNotEmpty()) { | |||
| @@ -285,12 +287,12 @@ open class TruckLaneScheduleService( | |||
| @Transactional | |||
| open fun ignore(id: Long): TruckLaneScheduleResponse { | |||
| 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) { | |||
| return toResponse(s, includeLines = true) | |||
| } | |||
| 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 = | |||
| scheduleLineRepository.findAllBySchedule_IdAndDeletedFalseOrderByIdAsc(s.id ?: 0L) | |||
| @@ -301,7 +303,7 @@ open class TruckLaneScheduleService( | |||
| s.status == TruckLaneScheduleStatus.PARTIAL || | |||
| failedLineCount > 0 | |||
| 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 | |||
| return toResponse(scheduleRepository.save(s), includeLines = true) | |||
| @@ -334,7 +336,7 @@ open class TruckLaneScheduleService( | |||
| for (schedule in stale) { | |||
| schedule.status = TruckLaneScheduleStatus.FAILED | |||
| 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) | |||
| } | |||
| } | |||
| @@ -381,11 +383,11 @@ open class TruckLaneScheduleService( | |||
| if (bucket.isNotEmpty()) { | |||
| throw ResponseStatusException( | |||
| 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 | |||
| ?: 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 { | |||
| lineAction = TruckLaneScheduleLineAction.ENSURE_LANE | |||
| toTruckLanceCode = toKey.truckLanceCode | |||
| @@ -400,14 +402,14 @@ open class TruckLaneScheduleService( | |||
| TruckLaneScheduleLineAction.CREATE -> { | |||
| 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 | |||
| ?: 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) | |||
| if (bucket.isEmpty() && !allowEmptyTarget) { | |||
| throw ResponseStatusException( | |||
| 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 | |||
| @@ -429,12 +431,12 @@ open class TruckLaneScheduleService( | |||
| TruckLaneScheduleLineAction.DELETE -> { | |||
| 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) | |||
| 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)) { | |||
| throw ResponseStatusException(HttpStatus.BAD_REQUEST, "無法刪除空白占位列") | |||
| throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("無法刪除空白占位列", "A blank placeholder row cannot be deleted")) | |||
| } | |||
| val fromKey = truckService.truckLaneBucketKeyOf(truck) | |||
| TruckLaneScheduleLine().apply { | |||
| @@ -454,17 +456,17 @@ open class TruckLaneScheduleService( | |||
| TruckLaneScheduleLineAction.MOVE -> { | |||
| 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) | |||
| 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 err = truckService.validateMoveToLane(truckRowId, toKey, allowEmptyTarget) | |||
| if (err != null) { | |||
| throw ResponseStatusException(HttpStatus.BAD_REQUEST, "truck #$truckRowId: $err") | |||
| } | |||
| 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 { | |||
| lineAction = TruckLaneScheduleLineAction.MOVE | |||
| this.truckRowId = truckRowId | |||
| @@ -498,7 +500,7 @@ open class TruckLaneScheduleService( | |||
| ) { | |||
| throw ResponseStatusException( | |||
| 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) { | |||
| val min = LocalDateTime.now().minusMinutes(2) | |||
| if (executeAt.isBefore(min)) { | |||
| throw ResponseStatusException(HttpStatus.BAD_REQUEST, "執行時間不可早於目前時間") | |||
| throw ResponseStatusException(HttpStatus.BAD_REQUEST, UiText.t("執行時間不可早於目前時間", "The run time cannot be earlier than now")) | |||
| } | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.pickOrder.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.fpsms.modules.common.demo.DemoFloors | |||
| import com.ffii.core.support.AbstractBaseEntityService | |||
| import com.ffii.core.support.JdbcDao | |||
| @@ -546,12 +548,12 @@ open class TruckService( | |||
| allowEmptyTarget: Boolean, | |||
| ): String? { | |||
| 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() | |||
| if (toCode.isEmpty()) return "目標車線編號不可為空" | |||
| if (toCode.isEmpty()) return UiText.t("目標車線編號不可為空", "The target truck lane code cannot be empty") | |||
| val fromKey = truckLaneBucketKeyOf(truck) | |||
| val sameLane = | |||
| @@ -563,11 +565,11 @@ open class TruckService( | |||
| val targetBucket = trucksInLaneBucket(to) | |||
| if (targetBucket.isEmpty()) { | |||
| 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)) { | |||
| return "目標車線已有相同店鋪" | |||
| return UiText.t("目標車線已有相同店鋪", "The target truck lane already has this shop") | |||
| } | |||
| return null | |||
| } | |||
| @@ -658,7 +660,7 @@ open class TruckService( | |||
| ): List<Truck> { | |||
| assertNotScheduleLocked(truckRowId) | |||
| var truck = findTruckRowByIdIncludingDeleted(truckRowId) | |||
| ?: throw IllegalArgumentException("找不到 truck #$truckRowId") | |||
| ?: throw IllegalArgumentException(UiText.t("找不到 truck #", "Truck not found: #") + truckRowId) | |||
| truck = restoreTruckRowIfDeleted(truck) | |||
| val err = validateMoveToLane(truckRowId, to) | |||
| @@ -994,12 +996,12 @@ open class TruckService( | |||
| rr.createCell(RouteLaneExcelSupport.COL_META_C).setCellValue(remark ?: "") | |||
| 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(trucks.first().storeId ?: "") | |||
| 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( | |||
| formatDepartureForExcel(trucks.first().departureTime), | |||
| ) | |||
| @@ -1046,7 +1048,7 @@ open class TruckService( | |||
| fun buildRouteReportFilename(): String { | |||
| 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 { | |||
| @@ -1103,7 +1105,7 @@ open class TruckService( | |||
| val byCompanyId = trucks.groupBy { t -> | |||
| val id = t.logistic?.id | |||
| 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) | |||
| } | |||
| @@ -1124,8 +1126,8 @@ open class TruckService( | |||
| RouteReportExcelSupport.writeTitle( | |||
| sheet, | |||
| st, | |||
| "新車綫($today)更改車線", | |||
| "製表: $preparedBy", | |||
| UiText.t("新車綫(", "New truck lanes (") + today + UiText.t(")更改車線", ") lane changes"), | |||
| UiText.t("製表: ", "Prepared by: ") + preparedBy, | |||
| companies.size, | |||
| ) | |||
| @@ -1300,13 +1302,13 @@ open class TruckService( | |||
| val summaryRows = buildSummaryRows(fromLines, toLines, diffLines, logisticNameById) | |||
| 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 created = toV.created?.toString() ?: "—" | |||
| val stats = summarizeSummaryRows(summaryRows) | |||
| 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( | |||
| wb, | |||
| @@ -1420,15 +1422,15 @@ open class TruckService( | |||
| } | |||
| 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( | |||
| @@ -1465,11 +1467,11 @@ open class TruckService( | |||
| .toSet() | |||
| val textBits = ArrayList<String>() | |||
| if (type == TruckLaneVersionReportExcelSupport.RowType.ADDED) { | |||
| textBits.add("新增到 $toLane") | |||
| textBits.add(UiText.t("新增到 ", "Added to ") + toLane) | |||
| } else if (type == TruckLaneVersionReportExcelSupport.RowType.DELETED) { | |||
| textBits.add("自 $fromLane 移除") | |||
| textBits.add(UiText.t("自 ", "Removed from ") + fromLane + UiText.t(" 移除", "")) | |||
| } else if (type == TruckLaneVersionReportExcelSupport.RowType.MOVED) { | |||
| textBits.add("由 $fromLane → $toLane") | |||
| textBits.add(UiText.t("由 ", "Moved ") + fromLane + " → " + toLane) | |||
| } | |||
| for (c in d.changes) { | |||
| if (c.field == "truckLanceCode" || c.field == "remark") continue | |||
| @@ -1500,7 +1502,7 @@ open class TruckService( | |||
| shopCode = (b?.shopCode ?: a?.shopCode ?: "").trim(), | |||
| fromLane = fromLane, | |||
| toLane = toLane, | |||
| changeText = textBits.joinToString(";").ifEmpty { "欄位變更" }, | |||
| changeText = textBits.joinToString(";").ifEmpty { UiText.t("欄位變更", "Field changes") }, | |||
| changedFields = changedFields, | |||
| ), | |||
| ) | |||
| @@ -1557,11 +1559,11 @@ open class TruckService( | |||
| rr.createCell(RouteLaneExcelSupport.COL_META_C).setCellValue(k.remark) | |||
| 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 = 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 }) | |||
| rr.createCell(RouteLaneExcelSupport.COL_META_B).setCellValue(formatDepartureForExcel(deptDefault)) | |||
| @@ -1672,7 +1674,7 @@ open class TruckService( | |||
| val byCompany = linesWithLane.groupBy { l -> | |||
| val id = l.logisticId | |||
| 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) | |||
| }.entries.sortedBy { it.key.name } | |||
| @@ -1681,8 +1683,8 @@ open class TruckService( | |||
| TruckLaneVersionRouteReportExcelSupport.writeTitle( | |||
| sheet, | |||
| st, | |||
| "車線報告($createdDate)更改車線", | |||
| "製表: $editor", | |||
| UiText.t("車線報告(", "Truck lane report (") + createdDate + UiText.t(")更改車線", ") lane changes"), | |||
| UiText.t("製表: ", "Prepared by: ") + editor, | |||
| byCompany.size.coerceAtLeast(1), | |||
| ) | |||
| @@ -1728,7 +1730,7 @@ open class TruckService( | |||
| val shown = fields | |||
| .filterNot { it == "truckLanceCode" || it == "remark" || it == "logisticId" } | |||
| .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 fromName = ch.from?.trim()?.toLongOrNull() | |||
| @@ -1743,7 +1745,7 @@ open class TruckService( | |||
| .orEmpty() | |||
| .ifEmpty { ch.to?.trim().orEmpty() } | |||
| .ifEmpty { "—" } | |||
| if (fromName != toName) "物流公司:$fromName → $toName" else null | |||
| if (fromName != toName) UiText.t("物流公司:", "Logistics company: ") + fromName + " → " + toName else null | |||
| } | |||
| val linesText = ArrayList<String>(4) | |||
| linesText.add(name) | |||
| @@ -1,5 +1,7 @@ | |||
| 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.pickOrder.entity.TruckLaneScheduleStatus | |||
| import com.ffii.fpsms.modules.pickOrder.service.TruckLaneScheduleService | |||
| @@ -149,7 +151,7 @@ open class TruckLaneScheduleController @Autowired constructor( | |||
| name = null, | |||
| code = null, | |||
| type = "truckLaneSchedule", | |||
| message = "無有效列可匯入", | |||
| message = UiText.t("無有效列可匯入", "No valid rows to import"), | |||
| errorPosition = null, | |||
| entity = parsed, | |||
| ), | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.fpsms.modules.report.service.LotExpiryAlertReportService.SearchFilters | |||
| import org.apache.poi.ss.usermodel.BorderStyle | |||
| import org.apache.poi.ss.usermodel.CellStyle | |||
| @@ -35,20 +37,20 @@ internal object LotExpiryAlertExcelBuilder { | |||
| workbook.setCompressTempFiles(true) | |||
| try { | |||
| val styles = createStyles(workbook) | |||
| val reportTitle = "到期警示報告" | |||
| val reportTitle = UiText.t("到期警示報告", "Expiry alert report") | |||
| val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) | |||
| 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 | |||
| var rowIndex = 0 | |||
| @@ -65,7 +67,7 @@ internal object LotExpiryAlertExcelBuilder { | |||
| val dateRow = sheet.createRow(rowIndex++) | |||
| dateRow.heightInPoints = 32f | |||
| dateRow.createCell(0).apply { | |||
| setCellValue("下載日期:$downloadedAt") | |||
| setCellValue(UiText.t("下載日期:", "Downloaded: ") + downloadedAt) | |||
| cellStyle = styles.subtitle | |||
| } | |||
| val dateEndCol = 3.coerceAtMost(totalColumns - 2) | |||
| @@ -74,14 +76,14 @@ internal object LotExpiryAlertExcelBuilder { | |||
| } | |||
| val filterStartCol = dateEndCol + 1 | |||
| 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(" ") | |||
| dateRow.createCell(filterStartCol).apply { | |||
| setCellValue("搜尋條件:$filterText") | |||
| setCellValue(UiText.t("搜尋條件:", "Filters: ") + filterText) | |||
| cellStyle = styles.subtitle | |||
| } | |||
| if (filterStartCol < totalColumns - 1) { | |||
| @@ -103,7 +105,7 @@ internal object LotExpiryAlertExcelBuilder { | |||
| val r = sheet.createRow(rowIndex++) | |||
| r.heightInPoints = 22f | |||
| r.createCell(0).apply { | |||
| setCellValue("查無資料") | |||
| setCellValue(UiText.t("查無資料", "No data")) | |||
| cellStyle = styles.center | |||
| } | |||
| for (c in 1 until totalColumns) { | |||
| @@ -210,15 +212,15 @@ internal object LotExpiryAlertExcelBuilder { | |||
| private fun displayFilter(raw: String?): String { | |||
| 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 { | |||
| 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") | |||
| } | |||
| } | |||
| @@ -1,6 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.service | |||
| import com.ffii.core.support.JdbcDao | |||
| import com.ffii.core.utils.UiText | |||
| import org.springframework.stereotype.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( | |||
| """ | |||
| SELECT | |||
| @@ -86,10 +90,10 @@ open class LotExpiryAlertReportService( | |||
| COALESCE(uc.udfudesc, uc.code, '') AS unitOfMeasure, | |||
| CASE | |||
| 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) | |||
| THEN '${daysAhead}日內到期' | |||
| THEN '$upcoming' | |||
| ELSE '' | |||
| END AS expiryAlert | |||
| FROM inventory_lot_line ill | |||
| @@ -1,5 +1,6 @@ | |||
| package com.ffii.fpsms.modules.report.service | |||
| import com.ffii.core.utils.ReportMessages | |||
| import com.ffii.fpsms.modules.common.demo.DemoFloors | |||
| import org.springframework.stereotype.Service | |||
| 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 { | |||
| val jasperReport = compiledReport(templatePath) | |||
| val dataSource = JRMapCollectionDataSource(dataList) | |||
| val jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource) | |||
| val jasperPrint = JasperFillManager.fillReport(jasperReport, withReportBundle(params), dataSource) | |||
| val out = ByteArrayOutputStream() | |||
| val exporter = JRXlsxExporter() | |||
| exporter.setExporterInput(SimpleExporterInput(jasperPrint)) | |||
| @@ -1749,10 +1750,16 @@ return result | |||
| fun createPdfResponse(templatePath: String, params: Map<String, Any>, dataList: List<Map<String, Any>>): ByteArray { | |||
| val jasperReport = compiledReport(templatePath) | |||
| val dataSource = JRMapCollectionDataSource(dataList) | |||
| val jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource) | |||
| val jasperPrint = JasperFillManager.fillReport(jasperReport, withReportBundle(params), dataSource) | |||
| 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 { | |||
| if (parts.isEmpty()) return ByteArray(0) | |||
| if (parts.size == 1) return parts[0] | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.service | |||
| import com.ffii.core.utils.UiText | |||
| import org.apache.pdfbox.pdmodel.PDDocument | |||
| import org.apache.pdfbox.pdmodel.PDPage | |||
| 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 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( | |||
| @@ -64,7 +66,7 @@ object StockLedgerPdf { | |||
| fun closeGroup() { | |||
| if (count > 1) { | |||
| 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[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) | |||
| @@ -168,7 +170,7 @@ object StockLedgerPdf { | |||
| val total = pages.size | |||
| pages.forEachIndexed { index, page -> | |||
| 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.setFont(font, 9f) | |||
| val labelX = PAGE_W - 18f - widthOf(label, 9f) | |||
| @@ -187,11 +189,11 @@ object StockLedgerPdf { | |||
| stream = PDPageContentStream(doc, page) | |||
| y = PAGE_H - 36f | |||
| openText() | |||
| text(300f, y, "庫存明細報告", 14f) | |||
| text(300f, y, UiText.t("庫存明細報告", "Stock ledger report"), 14f) | |||
| 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()) { | |||
| "報告期間:${periodStart.ifBlank { "—" }} 至 ${periodEnd.ifBlank { "—" }}" | |||
| UiText.t("報告期間:", "Report period: ") + (periodStart.ifBlank { "—" }) + UiText.t(" 至 ", " to ") + (periodEnd.ifBlank { "—" }) | |||
| } else { | |||
| "" | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.core.support.JdbcDao | |||
| import org.springframework.stereotype.Service | |||
| import java.math.BigDecimal | |||
| @@ -409,13 +411,13 @@ ORDER BY ledger.dt DESC, ledger.slId DESC | |||
| date > otherDate || (date == otherDate && id > otherId) | |||
| 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 | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.core.support.JdbcDao | |||
| import org.springframework.stereotype.Service | |||
| import java.time.LocalDate | |||
| @@ -288,7 +290,7 @@ stock_one AS ( | |||
| mapOf("lotIds" to chunk), | |||
| ) | |||
| n += rows.size | |||
| applySilSolHits(rows, hits, "入庫") | |||
| applySilSolHits(rows, hits, UiText.t("入庫", "Stock in")) | |||
| } | |||
| return n | |||
| } | |||
| @@ -310,7 +312,7 @@ stock_one AS ( | |||
| mapOf("lotIds" to chunk), | |||
| ) | |||
| n += rows.size | |||
| applySilSolHits(rows, hits, "入庫") | |||
| applySilSolHits(rows, hits, UiText.t("入庫", "Stock in")) | |||
| } | |||
| return n | |||
| } | |||
| @@ -332,7 +334,7 @@ stock_one AS ( | |||
| mapOf("lotIds" to chunk), | |||
| ) | |||
| n += rows.size | |||
| applySilSolHits(rows, hits, "出庫") | |||
| applySilSolHits(rows, hits, UiText.t("出庫", "Stock out")) | |||
| } | |||
| return n | |||
| } | |||
| @@ -346,16 +348,16 @@ stock_one AS ( | |||
| val prev = hits[lotId] | |||
| val newer = prev == null || | |||
| 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) | |||
| } | |||
| } | |||
| private fun lastTrnType(inQty: Double, outQty: Double): String = | |||
| 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 -> "" | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.fpsms.modules.common.demo.DemoFloors | |||
| import com.ffii.core.support.JdbcDao | |||
| 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 | |||
| """ | |||
| 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 | |||
| 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""" | |||
| } | |||
| 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 | |||
| WHEN UPPER(TRIM(COALESCE(origin_sil.type, ''))) = 'TRF' | |||
| 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""" | |||
| } | |||
| @@ -299,7 +316,7 @@ data AS ( | |||
| ls.approverStockTakeQty AS stkApproverQty, | |||
| ls.varianceQty AS stkVarianceQty, | |||
| ls.date AS stockTakeDateRaw, | |||
| $LOT_TYPE_DISPLAY_SQL AS lotTypeRaw | |||
| ${lotTypeDisplaySql()} AS lotTypeRaw | |||
| FROM inventory_lot_line ill | |||
| INNER JOIN inventory_lot il | |||
| ON ill.inventoryLotId = il.id | |||
| @@ -577,7 +594,7 @@ data AS ( | |||
| ls.strDate AS stockTakeDateRaw, | |||
| ls.approverTime AS approvalDateTimeRaw, | |||
| ls.stockTakeRecordStatus AS stockTakeRecordStatus, | |||
| $LOT_TYPE_DISPLAY_SQL AS lotTypeRaw | |||
| ${lotTypeDisplaySql()} AS lotTypeRaw | |||
| FROM latest_str ls | |||
| INNER JOIN inventory_lot il | |||
| ON ls.lotId = il.id | |||
| @@ -876,7 +893,7 @@ data AS ( | |||
| lb.strDate AS stockTakeDateRaw, | |||
| lb.approverTime AS approvalDateTimeRaw, | |||
| lb.stockTakeRecordStatus AS stockTakeRecordStatus, | |||
| $LOT_TYPE_DISPLAY_SQL AS lotTypeRaw | |||
| ${lotTypeDisplaySql()} AS lotTypeRaw | |||
| FROM line_bounds lb | |||
| 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 | |||
| @@ -962,23 +979,24 @@ ORDER BY | |||
| /** Overall 模式報表副標題(全系統輪次,舊 API 相容) */ | |||
| fun getStockTakeVarianceOverallCaption(): String = | |||
| "全輪次(各批號/倉別最新已完成盤點)" | |||
| UiText.t("全輪次(各批號/倉別最新已完成盤點)", "All rounds (latest completed count per lot and location)") | |||
| /** 多選輪次 Overall 模式報表副標題 */ | |||
| fun getStockTakeVarianceMultiRoundCaption(stockTakeRoundIds: List<Long>): String { | |||
| if (stockTakeRoundIds.isEmpty()) return getStockTakeVarianceOverallCaption() | |||
| 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 選項格式一致) */ | |||
| fun getStockTakeRoundCaption(stockTakeRoundId: Long): String { | |||
| val roundLabel = UiText.t("盤點輪次", "Round ").replace("'", "''") | |||
| val sql = """ | |||
| SELECT | |||
| CONCAT( | |||
| CASE | |||
| 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)) | |||
| END, | |||
| ' — ', | |||
| @@ -994,7 +1012,7 @@ ORDER BY | |||
| mapOf("stockTakeRoundId" to stockTakeRoundId) | |||
| ).firstOrNull() | |||
| val cap = row?.get("cap") as? String | |||
| return if (!cap.isNullOrBlank()) cap else "盤點輪次$stockTakeRoundId" | |||
| return if (!cap.isNullOrBlank()) cap else UiText.t("盤點輪次", "Round ") + stockTakeRoundId | |||
| } | |||
| /** | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.web | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.fpsms.modules.report.service.DoInventoryUomMismatchReportService | |||
| import org.apache.poi.ss.usermodel.BorderStyle | |||
| import org.apache.poi.ss.usermodel.FillPatternType | |||
| @@ -69,17 +71,17 @@ class DoInventoryUomMismatchReportController( | |||
| } | |||
| 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 | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.web | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.fpsms.modules.report.service.DoUserPickAuditReportService | |||
| import org.apache.poi.ss.usermodel.BorderStyle | |||
| import org.apache.poi.ss.usermodel.FillPatternType | |||
| @@ -52,15 +54,15 @@ class DoUserPickAuditReportController( | |||
| contentType = MediaType.parseMediaType( | |||
| "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) | |||
| } | |||
| private fun buildExcel(rows: List<Map<String, Any?>>): ByteArray { | |||
| 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 { | |||
| alignment = HorizontalAlignment.CENTER | |||
| verticalAlignment = VerticalAlignment.CENTER | |||
| @@ -82,20 +84,20 @@ class DoUserPickAuditReportController( | |||
| // key = SQL alias; label = Chinese Excel header | |||
| 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 | |||
| @@ -117,12 +119,12 @@ class DoUserPickAuditReportController( | |||
| null -> cell.setCellValue("") | |||
| is Number -> { | |||
| 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 { | |||
| 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()) | |||
| } | |||
| } | |||
| @@ -1,5 +1,7 @@ | |||
| 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.ReportService | |||
| import org.springframework.http.HttpHeaders | |||
| @@ -122,7 +124,7 @@ class FGStockOutTraceabilityReportController( | |||
| private fun createFGStockOutTraceabilityExcel(dbData: List<Map<String, Any>>): ByteArray { | |||
| val workbook = XSSFWorkbook() | |||
| val reportTitle = "成品出倉追蹤報告" | |||
| val reportTitle = UiText.t("成品出倉追蹤報告", "FG outbound traceability report") | |||
| val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle) | |||
| val sheet = workbook.createSheet(safeSheetName) | |||
| @@ -172,17 +174,17 @@ class FGStockOutTraceabilityReportController( | |||
| } | |||
| 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 { | |||
| @@ -276,7 +278,7 @@ class FGStockOutTraceabilityReportController( | |||
| } | |||
| } | |||
| summaryRow.createCell(6).apply { | |||
| setCellValue("總出倉量 :") | |||
| setCellValue(UiText.t("總出倉量 :", "Total outbound qty: ")) | |||
| cellStyle = summaryLabelInExpiryColStyle | |||
| } | |||
| summaryRow.createCell(7).apply { | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.web | |||
| import com.ffii.core.utils.UiText | |||
| import org.springframework.http.* | |||
| import org.springframework.web.bind.annotation.* | |||
| import com.ffii.fpsms.modules.report.service.ItemQcFailReportService | |||
| @@ -49,15 +51,15 @@ class ItemQcFailReportController( | |||
| val pdfParts = mutableListOf<ByteArray>() | |||
| 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()) { | |||
| pdfParts.add(createItemQcPdf(stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, failedRows, "不合格")) | |||
| pdfParts.add(createItemQcPdf(stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, failedRows, UiText.t("不合格", "Fail"))) | |||
| } | |||
| val pdfBytes = when { | |||
| pdfParts.isEmpty() -> createItemQcPdf( | |||
| stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, emptyList(), "合格" | |||
| stockCategory, itemCode, lastInDateStart, lastInDateEnd, qcType, emptyList(), UiText.t("合格", "Pass") | |||
| ) | |||
| pdfParts.size == 1 -> pdfParts[0] | |||
| else -> reportService.mergePdfBytes(pdfParts) | |||
| @@ -154,7 +156,7 @@ class ItemQcFailReportController( | |||
| return when (qcType?.trim()?.uppercase()) { | |||
| "IQC" -> "IQC" | |||
| "EPQC" -> "EPQC" | |||
| else -> "全部" | |||
| else -> UiText.t("全部", "All") | |||
| } | |||
| } | |||
| @@ -174,8 +176,8 @@ class ItemQcFailReportController( | |||
| qcType: String?, | |||
| ): ByteArray { | |||
| 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) | |||
| } | |||
| @@ -187,7 +189,7 @@ class ItemQcFailReportController( | |||
| lastInDateEnd: String?, | |||
| qcType: String?, | |||
| ) { | |||
| val reportTitle = "庫存品質檢測報告" | |||
| val reportTitle = UiText.t("庫存品質檢測報告", "Stock QC report") | |||
| val safeSheetName = WorkbookUtil.createSafeSheetName(sheetLabel) | |||
| val sheet = workbook.createSheet(safeSheetName) | |||
| @@ -227,7 +229,7 @@ class ItemQcFailReportController( | |||
| val startTxt = lastInDateStart ?: "" | |||
| val endTxt = lastInDateEnd ?: "" | |||
| 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 { | |||
| @@ -286,20 +288,20 @@ class ItemQcFailReportController( | |||
| } | |||
| 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 { | |||
| @@ -1,5 +1,7 @@ | |||
| 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.ReportService | |||
| import org.springframework.http.HttpHeaders | |||
| @@ -207,7 +209,7 @@ class MaterialStockOutTraceabilityReportController( | |||
| lastOutDateEnd: String?, | |||
| ): ByteArray { | |||
| val workbook = XSSFWorkbook() | |||
| val reportTitle = "物料出倉追蹤報告" | |||
| val reportTitle = UiText.t("物料出倉追蹤報告", "Material outbound traceability report") | |||
| val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle) | |||
| val sheet = workbook.createSheet(safeSheetName) | |||
| @@ -257,17 +259,17 @@ class MaterialStockOutTraceabilityReportController( | |||
| } | |||
| 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 | |||
| @@ -328,7 +330,7 @@ class MaterialStockOutTraceabilityReportController( | |||
| } | |||
| } | |||
| summaryRow.createCell(6).apply { | |||
| setCellValue("總出倉量 :") | |||
| setCellValue(UiText.t("總出倉量 :", "Total outbound qty: ")) | |||
| cellStyle = summaryLabelInExpiryColStyle | |||
| } | |||
| summaryRow.createCell(7).apply { | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.web | |||
| import com.ffii.core.utils.UiText | |||
| import net.sf.jasperreports.engine.* | |||
| import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource | |||
| import org.apache.poi.ss.usermodel.BorderStyle | |||
| @@ -788,15 +790,15 @@ class ReportController( | |||
| ): ByteArray { | |||
| val workbook = XSSFWorkbook() | |||
| val styles = createCommonWorkbookStyles(workbook) | |||
| val reportTitle = "入倉追蹤報告" | |||
| val reportTitle = UiText.t("入倉追蹤報告", "Stock-in traceability report") | |||
| val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) | |||
| 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 | |||
| var rowIndex = 0 | |||
| @@ -815,13 +817,13 @@ class ReportController( | |||
| ")" | |||
| val subtitleRow = sheet.createRow(rowIndex++) | |||
| subtitleRow.createCell(0).apply { | |||
| setCellValue("報告日期:$reportDateTime") | |||
| setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime) | |||
| cellStyle = styles.subtitle | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 5)) | |||
| 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 | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 6, totalColumns - 1)) | |||
| @@ -855,7 +857,7 @@ class ReportController( | |||
| // - 上架數量 (col 6) | |||
| // - 入庫檢查樣品數量 (col 7) | |||
| // - 入庫檢查缺陷數量 (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, 7, _totalSample, styles.sumQty, styles.dash, preferInt = false) | |||
| setNumberCellFromFormatted(r, 8, _totalDefect, styles.sumQty, styles.dash, preferInt = false) | |||
| @@ -944,12 +946,12 @@ class ReportController( | |||
| ): ByteArray { | |||
| val workbook = XSSFWorkbook() | |||
| val styles = createCommonWorkbookStyles(workbook) | |||
| val reportTitle = "成品出倉報告" | |||
| val reportTitle = UiText.t("成品出倉報告", "Finished goods outbound report") | |||
| val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) | |||
| 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 | |||
| var rowIndex = 0 | |||
| @@ -968,17 +970,17 @@ class ReportController( | |||
| ")" | |||
| val subtitleRow = sheet.createRow(rowIndex++) | |||
| subtitleRow.createCell(0).apply { | |||
| setCellValue("報告日期:$reportDateTime") | |||
| setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime) | |||
| cellStyle = styles.subtitle | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 2)) | |||
| 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 | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 3, 6)) | |||
| subtitleRow.createCell(7).apply { | |||
| setCellValue("年份:$year") | |||
| setCellValue(UiText.t("年份:", "Year: ") + year) | |||
| cellStyle = styles.subtitle | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 7, totalColumns - 1)) | |||
| @@ -1008,7 +1010,7 @@ class ReportController( | |||
| } | |||
| } | |||
| r.getCell(6).apply { | |||
| setCellValue("每單交貨總數:") | |||
| setCellValue(UiText.t("每單交貨總數:", "Delivery total: ")) | |||
| cellStyle = styles.sumLabel | |||
| } | |||
| r.getCell(7).apply { | |||
| @@ -1078,14 +1080,14 @@ class ReportController( | |||
| ): ByteArray { | |||
| val workbook = XSSFWorkbook() | |||
| val styles = createCommonWorkbookStyles(workbook) | |||
| val reportTitle = "庫存結餘報告" | |||
| val reportTitle = UiText.t("庫存結餘報告", "Stock balance report") | |||
| val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) | |||
| 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 | |||
| var rowIndex = 0 | |||
| @@ -1104,7 +1106,7 @@ class ReportController( | |||
| ")" | |||
| val subtitleRow = sheet.createRow(rowIndex++) | |||
| subtitleRow.createCell(0).apply { | |||
| setCellValue("報告日期:$reportDateTime") | |||
| setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime) | |||
| cellStyle = styles.subtitle | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 0, totalColumns - 1)) | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.web | |||
| import com.ffii.core.utils.UiText | |||
| import net.sf.jasperreports.engine.* | |||
| import org.springframework.http.* | |||
| import org.springframework.web.bind.annotation.* | |||
| @@ -160,7 +162,7 @@ class SemiFGProductionAnalysisReportController( | |||
| val excelBytes = createSemiFGProductionAnalysisExcel( | |||
| dbData = dbData, | |||
| reportTitle = "成品/半成品生產分析報告", | |||
| reportTitle = UiText.t("成品/半成品生產分析報告", "Finished / semi-finished production report"), | |||
| year = year | |||
| ) | |||
| @@ -249,13 +251,13 @@ class SemiFGProductionAnalysisReportController( | |||
| val infoRow = sheet.createRow(rowIndex++) | |||
| 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 | |||
| 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 | |||
| 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 | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 5)) | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 6, 10)) | |||
| @@ -264,22 +266,22 @@ class SemiFGProductionAnalysisReportController( | |||
| rowIndex++ // spacer row | |||
| 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++) | |||
| @@ -341,15 +343,15 @@ class SemiFGProductionAnalysisReportController( | |||
| "qtyJul", "qtyAug", "qtySep", "qtyOct", "qtyNov", "qtyDec", | |||
| ) | |||
| 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 headerRow = dataSheet.createRow(0) | |||
| headerRow.createCell(0).setCellValue("貨品編號") | |||
| headerRow.createCell(0).setCellValue(UiText.t("貨品編號", "Item code")) | |||
| monthLabels.forEachIndexed { i, label -> | |||
| headerRow.createCell(1 + i).setCellValue(label) | |||
| } | |||
| @@ -364,7 +366,7 @@ class SemiFGProductionAnalysisReportController( | |||
| val zColIndex = CellReference.convertColStringToIndex("Z") | |||
| val zHeader = dataSheet.getRow(0) ?: dataSheet.createRow(0) | |||
| zHeader.createCell(zColIndex).setCellValue("全部") | |||
| zHeader.createCell(zColIndex).setCellValue(UiText.t("全部", "All")) | |||
| dbData.forEachIndexed { idx, row -> | |||
| val r = dataSheet.getRow(1 + idx) ?: dataSheet.createRow(1 + idx) | |||
| r.createCell(zColIndex).setCellValue(row["itemNo"]?.toString() ?: "") | |||
| @@ -373,14 +375,14 @@ class SemiFGProductionAnalysisReportController( | |||
| val lastDataRow1Based = 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 labelR = chartSheet.createRow(0) | |||
| labelR.createCell(0).setCellValue("選擇貨品編號") | |||
| labelR.createCell(0).setCellValue(UiText.t("選擇貨品編號", "Select item code")) | |||
| val filterCell = labelR.createCell(1) | |||
| 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 listFormula = "'$dataSheetName'!\$Z\$1:\$Z\$$zListEnd1Based" | |||
| @@ -388,9 +390,9 @@ class SemiFGProductionAnalysisReportController( | |||
| val regions = CellRangeAddressList(0, 0, 1, 1) | |||
| val validation = dvHelper.createValidation(constraint, regions) | |||
| 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.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) | |||
| val catRowIndex = 3 | |||
| @@ -406,26 +408,26 @@ class SemiFGProductionAnalysisReportController( | |||
| val formula = if (lastDataRow1Based < 2) { | |||
| "0" | |||
| } 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) | |||
| } | |||
| catRow.createCell(lastMonthCol + 1).setCellValue("總和") | |||
| catRow.createCell(lastMonthCol + 1).setCellValue(UiText.t("總和", "Total")) | |||
| valRow.createCell(lastMonthCol + 1).setCellFormula("SUM(B5:M5)") | |||
| val drawing = chartSheet.createDrawingPatriarch() | |||
| val anchor = XSSFClientAnchor(0, 0, 0, 0, 1, 6, 14, 28) | |||
| val chart = drawing.createChart(anchor) | |||
| chart.setTitleText("各月生產數量(依選擇之貨品編號)") | |||
| chart.setTitleText(UiText.t("各月生產數量(依選擇之貨品編號)", "Monthly production quantity (selected item)")) | |||
| chart.setTitleOverlay(false) | |||
| val legend = chart.getOrAddLegend() | |||
| legend.position = LegendPosition.BOTTOM | |||
| val bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM) | |||
| bottomAxis.setTitle("月份") | |||
| bottomAxis.setTitle(UiText.t("月份", "Month")) | |||
| val leftAxis = chart.createValueAxis(AxisPosition.LEFT) | |||
| leftAxis.setTitle("生產數量") | |||
| leftAxis.setTitle(UiText.t("生產數量", "Production qty")) | |||
| val catRangeAddr = CellRangeAddress(catRowIndex, catRowIndex, 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 | |||
| barData.barDirection = BarDirection.COL | |||
| val series = barData.addSeries(categories, values) | |||
| series.setTitle("生產數量", null) | |||
| series.setTitle(UiText.t("生產數量", "Production qty"), null) | |||
| chart.plot(barData) | |||
| chartSheet.setColumnWidth(0, 18 * 256) | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.web | |||
| import com.ffii.core.utils.UiText | |||
| import net.sf.jasperreports.engine.* | |||
| import org.springframework.http.* | |||
| import org.springframework.web.bind.annotation.* | |||
| @@ -155,7 +157,7 @@ class StockItemConsumptionTrendReportController( | |||
| val excelBytes = createStockItemConsumptionTrendExcel( | |||
| dbData = dbData, | |||
| reportTitle = "庫存材料消耗趨勢報告", | |||
| reportTitle = UiText.t("庫存材料消耗趨勢報告", "Material consumption trend report"), | |||
| year = year, | |||
| lastOutDateStart = lastOutDateStart, | |||
| lastOutDateEnd = lastOutDateEnd | |||
| @@ -261,17 +263,17 @@ class StockItemConsumptionTrendReportController( | |||
| val infoRow = sheet.createRow(rowIndex++) | |||
| val reportDateCell = infoRow.createCell(0) | |||
| 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 | |||
| 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 | |||
| val reportYearCell = infoRow.createCell(11) | |||
| reportYearCell.setCellValue( | |||
| "年份:${year?.takeIf { it.isNotBlank() && it != "All" } ?: "All"}" | |||
| UiText.t("年份:", "Year: ") + (year?.takeIf { it.isNotBlank() && it != "All" } ?: "All") | |||
| ) | |||
| reportYearCell.cellStyle = infoStyle | |||
| @@ -285,9 +287,9 @@ class StockItemConsumptionTrendReportController( | |||
| rangeRow.heightInPoints = 20f | |||
| val rangeCell = rangeRow.createCell(0) | |||
| val rangeText = buildString { | |||
| append("材料消耗日期:") | |||
| append(UiText.t("材料消耗日期:", "Consumption date: ")) | |||
| append(lastOutDateStart ?: "") | |||
| append(" 至 ") | |||
| append(UiText.t(" 至 ", " to ")) | |||
| append(lastOutDateEnd ?: "") | |||
| } | |||
| rangeCell.setCellValue(rangeText) | |||
| @@ -296,22 +298,22 @@ class StockItemConsumptionTrendReportController( | |||
| // Column headers | |||
| 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 | |||
| @@ -371,15 +373,15 @@ class StockItemConsumptionTrendReportController( | |||
| "qtyJul", "qtyAug", "qtySep", "qtyOct", "qtyNov", "qtyDec", | |||
| ) | |||
| 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 headerRow = dataSheet.createRow(0) | |||
| headerRow.createCell(0).setCellValue("貨品編號") | |||
| headerRow.createCell(0).setCellValue(UiText.t("貨品編號", "Item code")) | |||
| monthLabels.forEachIndexed { i, label -> | |||
| headerRow.createCell(1 + i).setCellValue(label) | |||
| } | |||
| @@ -394,7 +396,7 @@ class StockItemConsumptionTrendReportController( | |||
| val zColIndex = CellReference.convertColStringToIndex("Z") | |||
| val zHeader = dataSheet.getRow(0) ?: dataSheet.createRow(0) | |||
| zHeader.createCell(zColIndex).setCellValue("全部") | |||
| zHeader.createCell(zColIndex).setCellValue(UiText.t("全部", "All")) | |||
| dbData.forEachIndexed { idx, row -> | |||
| val r = dataSheet.getRow(1 + idx) ?: dataSheet.createRow(1 + idx) | |||
| r.createCell(zColIndex).setCellValue(row["itemNo"]?.toString() ?: "") | |||
| @@ -403,14 +405,14 @@ class StockItemConsumptionTrendReportController( | |||
| val lastDataRow1Based = 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 labelR = chartSheet.createRow(0) | |||
| labelR.createCell(0).setCellValue("選擇貨品編號") | |||
| labelR.createCell(0).setCellValue(UiText.t("選擇貨品編號", "Select item code")) | |||
| val filterCell = labelR.createCell(1) | |||
| 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 listFormula = "'$dataSheetName'!\$Z\$1:\$Z\$$zListEnd1Based" | |||
| @@ -418,9 +420,9 @@ class StockItemConsumptionTrendReportController( | |||
| val regions = CellRangeAddressList(0, 0, 1, 1) | |||
| val validation = dvHelper.createValidation(constraint, regions) | |||
| 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.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) | |||
| val catRowIndex = 3 | |||
| @@ -437,27 +439,27 @@ class StockItemConsumptionTrendReportController( | |||
| val formula = if (lastDataRow1Based < 2) { | |||
| "0" | |||
| } 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) | |||
| } | |||
| catRow.createCell(lastMonthCol + 1).setCellValue("總和") | |||
| catRow.createCell(lastMonthCol + 1).setCellValue(UiText.t("總和", "Total")) | |||
| valRow.createCell(lastMonthCol + 1).setCellFormula("SUM(B5:M5)") | |||
| val drawing = chartSheet.createDrawingPatriarch() | |||
| val anchor = XSSFClientAnchor(0, 0, 0, 0, 1, 6, 14, 28) | |||
| val chart = drawing.createChart(anchor) | |||
| chart.setTitleText("各月消耗數量(依選擇之貨品編號)") | |||
| chart.setTitleText(UiText.t("各月消耗數量(依選擇之貨品編號)", "Monthly consumption quantity (selected item)")) | |||
| chart.setTitleOverlay(false) | |||
| val legend = chart.getOrAddLegend() | |||
| legend.position = LegendPosition.BOTTOM | |||
| val bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM) | |||
| bottomAxis.setTitle("月份") | |||
| bottomAxis.setTitle(UiText.t("月份", "Month")) | |||
| val leftAxis = chart.createValueAxis(AxisPosition.LEFT) | |||
| leftAxis.setTitle("消耗數量") | |||
| leftAxis.setTitle(UiText.t("消耗數量", "Consumption qty")) | |||
| val catRangeAddr = CellRangeAddress(catRowIndex, catRowIndex, 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 | |||
| barData.barDirection = BarDirection.COL | |||
| val series = barData.addSeries(categories, values) | |||
| series.setTitle("消耗數量", null) | |||
| series.setTitle(UiText.t("消耗數量", "Consumption qty"), null) | |||
| chart.plot(barData) | |||
| chartSheet.setColumnWidth(0, 18 * 256) | |||
| @@ -1,4 +1,6 @@ | |||
| package com.ffii.fpsms.modules.report.web | |||
| import com.ffii.core.utils.UiText | |||
| import org.springframework.web.bind.annotation.* | |||
| import org.springframework.http.* | |||
| import java.time.LocalDate | |||
| @@ -324,14 +326,14 @@ class StockLedgerReportController( | |||
| workbook.setCompressTempFiles(true) | |||
| try { | |||
| val styles = createStyles(workbook) | |||
| val reportTitle = "庫存明細報告" | |||
| val reportTitle = UiText.t("庫存明細報告", "Stock ledger report") | |||
| val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) | |||
| 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 | |||
| var rowIndex = 0 | |||
| @@ -350,12 +352,12 @@ class StockLedgerReportController( | |||
| ")" | |||
| val subtitleRow = sheet.createRow(rowIndex++) | |||
| subtitleRow.createCell(0).apply { | |||
| setCellValue("報告日期:$reportDateTime") | |||
| setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime) | |||
| cellStyle = styles.subtitle | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 4)) | |||
| subtitleRow.createCell(5).apply { | |||
| setCellValue("報告期間:${reportPeriodStart.trim()} 至 ${reportPeriodEnd.trim()}") | |||
| setCellValue(UiText.t("報告期間:", "Report period: ") + (reportPeriodStart.trim()) + UiText.t(" 至 ", " to ") + (reportPeriodEnd.trim())) | |||
| cellStyle = styles.subtitle | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 5, totalColumns - 1)) | |||
| @@ -385,7 +387,7 @@ class StockLedgerReportController( | |||
| for (c in 3 until totalColumns) { | |||
| 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, 9, totalOut, 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, 3, m["trnDate"], styles.center) | |||
| 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, 5, m["lotNo"], styles.text) | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.report.web | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.fpsms.modules.report.service.StockLotOnhandReportService | |||
| import org.apache.poi.ss.usermodel.BorderStyle | |||
| import org.apache.poi.ss.usermodel.CellStyle | |||
| @@ -186,8 +188,8 @@ class StockLotOnhandReportController( | |||
| private fun displayFilter(raw: String?): String { | |||
| 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 | |||
| } | |||
| @@ -208,14 +210,14 @@ class StockLotOnhandReportController( | |||
| workbook.setCompressTempFiles(true) | |||
| try { | |||
| val styles = createStyles(workbook) | |||
| val reportTitle = "庫存批次現況報告" | |||
| val reportTitle = UiText.t("庫存批次現況報告", "Lot on-hand report") | |||
| val sheet = workbook.createSheet(WorkbookUtil.createSafeSheetName(reportTitle)) | |||
| 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 | |||
| var rowIndex = 0 | |||
| @@ -236,25 +238,25 @@ class StockLotOnhandReportController( | |||
| val dateRow = sheet.createRow(rowIndex++) | |||
| dateRow.heightInPoints = 18f | |||
| dateRow.createCell(0).apply { | |||
| setCellValue("報告日期(現況):$reportDateTime") | |||
| setCellValue(UiText.t("報告日期(現況):", "Report date (as of): ") + reportDateTime) | |||
| cellStyle = styles.subtitle | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 0, totalColumns - 1)) | |||
| 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(" ") | |||
| val criteriaRow = sheet.createRow(rowIndex++) | |||
| criteriaRow.heightInPoints = 32f | |||
| criteriaRow.createCell(0).apply { | |||
| setCellValue("搜尋條件:$criteriaText") | |||
| setCellValue(UiText.t("搜尋條件:", "Filters: ") + criteriaText) | |||
| cellStyle = styles.subtitle | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(2, 2, 0, totalColumns - 1)) | |||
| @@ -274,7 +276,7 @@ class StockLotOnhandReportController( | |||
| val r = sheet.createRow(rowIndex++) | |||
| r.heightInPoints = 22f | |||
| r.createCell(0).apply { | |||
| setCellValue("查無資料") | |||
| setCellValue(UiText.t("查無資料", "No data")) | |||
| cellStyle = styles.center | |||
| } | |||
| for (c in 1 until totalColumns) { | |||
| @@ -1,5 +1,7 @@ | |||
| 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.StockTakeVarianceReportService | |||
| import org.apache.poi.ss.usermodel.BorderStyle | |||
| @@ -240,7 +242,7 @@ class StockTakeVarianceReportController( | |||
| val s = stockTakeDateStart?.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( | |||
| @@ -248,23 +250,23 @@ class StockTakeVarianceReportController( | |||
| stockTakeCaption: String, | |||
| ): ByteArray { | |||
| val workbook = XSSFWorkbook() | |||
| val reportTitle = "庫存盤點報告" | |||
| val reportTitle = UiText.t("庫存盤點報告", "Stock take report") | |||
| val safeSheetName = WorkbookUtil.createSafeSheetName(reportTitle) | |||
| val sheet = workbook.createSheet(safeSheetName) | |||
| 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 | |||
| var rowIndex = 0 | |||
| @@ -400,12 +402,12 @@ class StockTakeVarianceReportController( | |||
| ")" | |||
| val subtitleRow = sheet.createRow(rowIndex++) | |||
| subtitleRow.createCell(0).apply { | |||
| setCellValue("報告日期:$reportDateTime") | |||
| setCellValue(UiText.t("報告日期:", "Report date: ") + reportDateTime) | |||
| cellStyle = subtitleStyle | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 0, 2)) | |||
| subtitleRow.createCell(3).apply { | |||
| setCellValue(if (stockTakeCaption.isBlank()) "" else "盤點日期:$stockTakeCaption") | |||
| setCellValue(if (stockTakeCaption.isBlank()) "" else UiText.t("盤點日期:", "Count date: ") + stockTakeCaption) | |||
| cellStyle = subtitleStyle | |||
| } | |||
| sheet.addMergedRegion(CellRangeAddress(1, 1, 3, totalColumns - 1)) | |||
| @@ -450,7 +452,7 @@ class StockTakeVarianceReportController( | |||
| val labelCol = 5 | |||
| val valueCol = 6 | |||
| r.getCell(labelCol).apply { | |||
| setCellValue("貨品總量:") | |||
| setCellValue(UiText.t("貨品總量:", "Total qty: ")) | |||
| cellStyle = summaryLabelThickBottomStyle | |||
| } | |||
| r.getCell(valueCol).apply { | |||
| @@ -616,7 +618,7 @@ class StockTakeVarianceReportController( | |||
| if (useLegacyOverall) { | |||
| return Rep012ReportData( | |||
| caption = stockTakeVarianceReportService.getStockTakeVarianceOverallCaption(), | |||
| conditionLabel = "盤點條件:", | |||
| conditionLabel = UiText.t("盤點條件:", "Count filter: "), | |||
| dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2Overall( | |||
| itemCode = itemCode, | |||
| storeId = storeId, | |||
| @@ -629,7 +631,7 @@ class StockTakeVarianceReportController( | |||
| val id = roundIds.first() | |||
| return Rep012ReportData( | |||
| caption = stockTakeVarianceReportService.getStockTakeRoundCaption(id), | |||
| conditionLabel = "盤點輪次:", | |||
| conditionLabel = UiText.t("盤點輪次:", "Round: "), | |||
| dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2( | |||
| stockTakeRoundId = id, | |||
| itemCode = itemCode, | |||
| @@ -642,7 +644,7 @@ class StockTakeVarianceReportController( | |||
| return Rep012ReportData( | |||
| caption = stockTakeVarianceReportService.getStockTakeVarianceMultiRoundCaption(roundIds), | |||
| conditionLabel = "盤點條件:", | |||
| conditionLabel = UiText.t("盤點條件:", "Count filter: "), | |||
| dbData = stockTakeVarianceReportService.searchStockTakeVarianceReportV2Overall( | |||
| itemCode = itemCode, | |||
| storeId = storeId, | |||
| @@ -1,5 +1,7 @@ | |||
| package com.ffii.fpsms.modules.stock.service | |||
| import com.ffii.core.utils.UiText | |||
| import com.ffii.core.exception.BadRequestException | |||
| import com.ffii.core.support.AbstractBaseEntityService | |||
| import com.ffii.core.support.JdbcDao | |||
| @@ -1249,7 +1251,7 @@ open class StockInLineService( | |||
| val poLabel = JasperCompileManager.compileReport(inputStream) | |||
| val qrCodeInfo = stockInLineRepository.findStockInLineInfoByIdInAndDeletedFalse(request.stockInLineIds).toMutableList() | |||
| 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>>() | |||
| @@ -43,7 +43,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{shopPurchaseOrderNo}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -57,10 +57,9 @@ | |||
| <textElement verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="14"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| @@ -70,8 +69,8 @@ | |||
| <textElement verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="14"/> | |||
| </textElement> | |||
| <text><![CDATA[送貨單編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r1814ca0dcbea}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="99" y="166" width="191" height="45" uuid="4319059b-9096-4c49-8275-287be93d3e6a"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -114,7 +113,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{shopName}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -129,9 +128,9 @@ | |||
| <textElement verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -143,8 +142,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16"/> | |||
| </textElement> | |||
| <text><![CDATA[ 箱(蛋類除外)]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r3b9bf196effe}]]></textFieldExpression> | |||
| </textField> | |||
| <textField isBlankWhenNull="true"> | |||
| <reportElement x="69" y="136" width="40" height="30" uuid="dab335a5-e253-498c-a9bf-b9707d8e1099"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -184,7 +183,7 @@ | |||
| </textElement> | |||
| <text><![CDATA[/]]></text> | |||
| </staticText> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -199,9 +198,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="14"/> | |||
| </textElement> | |||
| <text><![CDATA[車線 | |||
| ]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf9015e9ab095}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont"> | |||
| <reportElement x="290" y="155" width="104" height="86" uuid="57f8e4fa-cea0-42c5-b9e5-a33f0a2710b8"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -36,7 +36,7 @@ | |||
| </title> | |||
| <pageHeader> | |||
| <band height="128"> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -44,8 +44,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="470" y="0" width="20" height="18" uuid="33b3d236-1c13-4751-abf5-79871b2535ea"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -53,7 +53,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -61,8 +61,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rd04825997b36}]]></textFieldExpression> | |||
| </textField> | |||
| <textField evaluationTime="Report"> | |||
| <reportElement x="510" y="0" width="20" height="18" uuid="428142d2-39f0-43f1-b662-f1ab72f0aa1a"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -93,7 +93,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{dnTitle}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -101,8 +101,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle" markup="styled"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[店鋪:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rc54be4c935e7}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="StretchHeight"> | |||
| <reportElement x="70" y="25" width="300" height="23" uuid="abe02be5-6047-4dd1-9637-f21612d9040a"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -112,15 +112,15 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{shopName}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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"/> | |||
| </reportElement> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="false"/> | |||
| </textElement> | |||
| <text><![CDATA[地址:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r3d589b9b7f8a}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="StretchHeight"> | |||
| <reportElement positionType="Float" x="70" y="50" width="465" height="23" uuid="89e79bce-bd39-48e6-b114-c11b4bcc5c9f"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| @@ -128,15 +128,15 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{shopAddress}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="370" y="25" width="70" height="23" uuid="a8be367e-c33a-4876-bb0e-14c2eea6bca0"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| </reportElement> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[貨車:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rd2ec8aa96e7a}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont"> | |||
| <reportElement x="440" y="25" width="95" height="23" uuid="2a73f702-dda6-4abf-90b3-14704f6d3c7b"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| @@ -151,7 +151,7 @@ | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| </line> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -159,9 +159,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -169,8 +169,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Top"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[店鋪採購單號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r65116ebb128b}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="StretchHeight"> | |||
| <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"/> | |||
| @@ -241,7 +241,7 @@ | |||
| </pageHeader> | |||
| <columnHeader> | |||
| <band height="33"> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -250,9 +250,9 @@ | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -261,9 +261,9 @@ | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -271,9 +271,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -281,8 +281,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[貨品名稱]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="28" width="554" height="1" uuid="76648c53-0490-4e52-b737-a8075d9c654f"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -386,7 +386,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{signOff}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -394,8 +394,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Top"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[單號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r4dc2870c059c}]]></textFieldExpression> | |||
| </textField> | |||
| </band> | |||
| </detail> | |||
| <pageFooter> | |||
| @@ -24,19 +24,19 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="18" isBold="true"/> | |||
| </textElement> | |||
| <textFieldExpression><![CDATA["送貨路線摘要(" + $P{TRUCK_ROUTE} + ")"]]></textFieldExpression> | |||
| <textFieldExpression><![CDATA[$R{r00c45eb6d637} + $P{TRUCK_ROUTE} + $R{rfa354ca634f3}]]></textFieldExpression> | |||
| </textField> | |||
| </band> | |||
| </title> | |||
| <pageHeader> | |||
| <band height="27"> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="0" y="0" width="130" height="22" uuid="9d3f5b73-ceaa-4653-909f-e8534d19c61e"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="14" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[計劃車次出發時間:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rc23e5226dd29}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="130" y="0" width="90" height="22" uuid="92335393-c410-4935-bd28-29a6175a9769"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| @@ -44,13 +44,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{DEPARTURE_TIME}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="430" y="0" width="45" height="22" uuid="8770a6e7-8a03-47ab-aa3c-00f02815d3b4"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="14" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rb2778afe0187}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="475" y="0" width="80" height="22" uuid="1a628742-c50c-47a8-9f3d-df91dbc4b184"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -65,34 +65,34 @@ | |||
| </pageHeader> | |||
| <columnHeader> | |||
| <band height="28"> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="0" y="4" width="60" height="20" uuid="7dbf4192-d9d9-4f3e-95bc-d2700d4e5798"/> | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="14" isBold="true"/> | |||
| </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"/> | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="14" isBold="true"/> | |||
| </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"/> | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="14" isBold="true"/> | |||
| </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"/> | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="14" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[箱數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r0eec66363def}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="27" width="555" height="1" uuid="a370b2d2-4853-460a-900a-a15d2e1b8e94"/> | |||
| </line> | |||
| @@ -127,9 +127,9 @@ | |||
| <textElement verticalAlignment="Top"> | |||
| <font fontName="微軟正黑體" size="14"/> | |||
| </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{shopName} == null || $F{shopName}.trim().isEmpty()) ? "" : "\n") + "地址:" + $F{address}.trim() | |||
| (($F{shopName} == null || $F{shopName}.trim().isEmpty()) ? "" : "\n") + $R{r3d589b9b7f8a} + $F{address}.trim() | |||
| ))]]></textFieldExpression> | |||
| </textField> | |||
| <textField isBlankWhenNull="true"> | |||
| @@ -151,7 +151,7 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="9"/> | |||
| </textElement> | |||
| <textFieldExpression><![CDATA["第 " + $V{PAGE_NUMBER} + " 頁"]]></textFieldExpression> | |||
| <textFieldExpression><![CDATA[$R{rf495347d6acf} + $V{PAGE_NUMBER} + $R{r080fcc65b244}]]></textFieldExpression> | |||
| </textField> | |||
| </band> | |||
| </pageFooter> | |||
| @@ -30,7 +30,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{productionDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -38,9 +38,8 @@ | |||
| <textElement verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16"/> | |||
| </textElement> | |||
| <text><![CDATA[生產日期: | |||
| ]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{raeb34e99d155}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont"> | |||
| <reportElement x="80" y="50" width="160" height="30" uuid="9a440925-1bd4-4001-9b4b-7163ac27551e"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -51,7 +50,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{jobOrderCode}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -59,9 +58,8 @@ | |||
| <textElement verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16"/> | |||
| </textElement> | |||
| <text><![CDATA[批次編號: | |||
| ]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rff67331bff3b}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="80" y="110" width="160" height="30" uuid="57f8e4fa-cea0-42c5-b9e5-a33f0a2710b8"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -96,7 +94,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{finishedGoodLotNo}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -104,9 +102,8 @@ | |||
| <textElement verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16"/> | |||
| </textElement> | |||
| <text><![CDATA[到期日期: | |||
| ]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r5f876eb35fb3}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="80" y="202" width="180" height="30" uuid="802555cd-a78b-49c4-b018-61c55f28070c"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -117,7 +114,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{expiryDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -125,9 +122,9 @@ | |||
| <textElement verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -135,9 +132,8 @@ | |||
| <textElement verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16"/> | |||
| </textElement> | |||
| <text><![CDATA[數量: | |||
| ]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{raf1eb6fab37f}]]></textFieldExpression> | |||
| </textField> | |||
| <image> | |||
| <reportElement x="265" y="38" width="115" height="115" uuid="f61ca1c1-333b-42e1-9a00-85f5ef1e3492"> | |||
| <property name="com.jaspersoft.studio.unit.x" value="px"/> | |||
| @@ -1,6 +1,6 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?> | |||
| <!-- 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="FGCode" class="java.lang.String"/> | |||
| <parameter name="unit" class="java.lang.String"/> | |||
| @@ -25,7 +25,7 @@ | |||
| </background> | |||
| <pageHeader> | |||
| <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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -33,8 +33,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[膠茜數目:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r6850973fd787}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="75" y="5" width="80" height="18" uuid="b2c3d4e5-f6a7-8901-bcde-f12345678901"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -52,9 +52,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16"/> | |||
| </textElement> | |||
| <textFieldExpression><![CDATA["板頭紙(" + ($P{Floor} == null ? "" : $P{Floor}) + ")"]]></textFieldExpression> | |||
| <textFieldExpression><![CDATA[$R{rd62378893466} + ($P{Floor} == null ? "" : $P{Floor}) + $R{rfa354ca634f3}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -62,8 +62,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rd04825997b36}]]></textFieldExpression> | |||
| </textField> | |||
| <textField evaluationTime="Report"> | |||
| <reportElement x="515" y="5" width="20" height="18" uuid="9d782ac8-6fd4-4336-abfe-436435476462"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -89,7 +89,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -97,9 +97,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -107,8 +107,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[工單編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf03632dd7521}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="85" y="35" width="150" height="18" uuid="abfe6fd4-11e3-463b-b075-ed6b335e4a97"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -118,7 +118,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{JobOrderCode}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -126,8 +126,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[成品編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r1620c7944cce}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="85" y="55" width="150" height="18" uuid="c9a7aaad-ef1a-4e42-9c32-794dcf5d8ca9"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -137,7 +137,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{FGCode}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -145,8 +145,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[成品名稱:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r86216baadfe7}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="365" y="55" width="150" height="18" uuid="62720d55-e8e1-49c8-a420-8318685e9e58"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -156,7 +156,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{FGName}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -164,8 +164,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[需求數量:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rd3d752f0f2e4}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="365" y="75" width="150" height="18" uuid="367706ae-196f-4b5d-b9b2-5fbc4d70ce9b"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -175,7 +175,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{RequiredQuantity}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -183,8 +183,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[生產日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r9c35fe458ba5}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="365" y="35" width="150" height="18" uuid="f044c78b-cdcb-4a90-81c5-a6fc81b73efc"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -194,7 +194,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{ProductionDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -202,8 +202,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[銷售單位:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r9b7133939fe4}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="85" y="75" width="150" height="18" uuid="ee5b0bcd-5a86-43e1-a003-ea5c7b9dd147"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -217,7 +217,7 @@ | |||
| </pageHeader> | |||
| <columnHeader> | |||
| <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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -226,9 +226,9 @@ | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -237,9 +237,9 @@ | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -247,9 +247,9 @@ | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -257,9 +257,9 @@ | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -267,8 +267,8 @@ | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[已提數量]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{re79ab7530b02}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="33" width="554" height="1" uuid="ff5ea71d-829e-40f0-bfa8-d223d9fc7769"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -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=存倉位置 | |||
| @@ -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 | |||
| @@ -83,13 +83,13 @@ | |||
| <groupFooter> | |||
| <band height="20"> | |||
| <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"/> | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[每單交貨總數:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r16d24ae82a7d}]]></textFieldExpression> | |||
| </textField> | |||
| <textField pattern="#,##0"> | |||
| <reportElement x="502" y="0" width="80" height="19" uuid="939e4c5b-176c-4154-aabd-bf06c2a0e594"/> | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| @@ -129,7 +129,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -137,8 +137,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <reportElement x="740" y="0" width="20" height="23" uuid="e0a5035b-8a7c-49c0-b012-baf4325774b7"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| @@ -156,7 +156,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -164,8 +164,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="711" y="53" width="79" height="23" uuid="b1bba504-8ae4-4985-909c-e598c2e6001b"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -173,7 +173,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{year}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -181,9 +181,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -191,8 +191,8 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[年份:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rb568e0135677}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="711" y="30" width="79" height="23" uuid="89bfffda-987c-4c76-bd0e-cfdb63d8bd0e"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -207,7 +207,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -215,8 +215,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[成品出倉報告]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{re4e94fa79f81}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="98" y="53" width="336" height="23" uuid="f855785e-5316-4c6c-a612-556f58dff006"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -224,9 +224,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression> | |||
| <textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -235,9 +235,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -246,9 +246,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -257,9 +257,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -268,9 +268,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -279,9 +279,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -290,9 +290,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -301,9 +301,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -312,8 +312,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[貨車]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r38315806410a}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="80" width="799" height="1" uuid="7c6becba-07e5-436b-aa4f-48e1711511bd"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -74,7 +74,7 @@ | |||
| <groupFooter> | |||
| <band height="19"> | |||
| <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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -82,8 +82,8 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[總出倉量:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rbca4ea568093}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="490" y="0" width="59" height="18" uuid="e4734789-5213-4934-80fe-6d72f3c38f23"/> | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| @@ -127,7 +127,7 @@ | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| </line> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -135,9 +135,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="pixel"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -146,16 +146,16 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[最後出倉日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r38aac4c4ec15}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="100" y="53" width="560" height="23" uuid="76ed89e6-9e70-4cc3-9d38-ff5dc24cd094"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression> | |||
| <textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -164,9 +164,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -175,9 +175,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -186,9 +186,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -196,9 +196,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -207,9 +207,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -217,9 +217,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isItalic="false"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -227,9 +227,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -238,9 +238,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -249,8 +249,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[送貨訂單編號]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r1b1840749a63}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="1" y="98" width="800" height="1" uuid="8ee25725-096b-4d76-9c7a-c0a41fbe6dbb"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -280,7 +280,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -288,8 +288,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression> | |||
| </textField> | |||
| <textField evaluationTime="Report"> | |||
| <reportElement x="768" y="0" width="30" height="23" uuid="0bd93c84-e6c8-4613-afec-12632071b737"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -305,7 +305,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -313,9 +313,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -323,8 +323,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告時間:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression> | |||
| </textField> | |||
| </band> | |||
| </pageHeader> | |||
| <detail> | |||
| @@ -97,7 +97,7 @@ | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| </line> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -105,9 +105,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -116,9 +116,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -127,9 +127,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -138,9 +138,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -149,9 +149,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -160,9 +160,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -171,9 +171,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -182,9 +182,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -193,8 +193,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[品質問題]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rbe48450caef9}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="98" width="799" height="1" uuid="726e7b1b-ad52-448c-8ad8-c091106d74dc"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -225,7 +225,7 @@ | |||
| </textElement> | |||
| <text><![CDATA[/]]></text> | |||
| </staticText> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -233,8 +233,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="708" y="29" width="90" height="23" uuid="2531fea1-1a06-4c5b-9be5-c2f615d98dac"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -242,7 +242,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportTime}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -250,8 +250,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告時間:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="100" y="30" width="335" height="23" uuid="20007ca4-c3e0-4e46-b05f-53ca15e9494f"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| @@ -259,7 +259,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -267,9 +267,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="pixel"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -278,14 +278,14 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[QC 檢測日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r8bf5d9b7ff89}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="100" y="53" width="560" height="23" uuid="96afd73f-53ed-42cd-9911-fdaac017d65b"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{lastInDateStart} + " 至 " + $P{lastInDateEnd}]]></textFieldExpression> | |||
| <textFieldExpression><![CDATA[$P{lastInDateStart} + $R{r9f96f7e891cd} + $P{lastInDateEnd}]]></textFieldExpression> | |||
| </textField> | |||
| <textField isBlankWhenNull="true"> | |||
| <reportElement x="322" y="23" width="158" height="20" uuid="a1b2c3d4-e5f6-7890-abcd-ef1234567890"/> | |||
| @@ -294,13 +294,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportSection} != null && !$P{reportSection}.isEmpty() ? "(" + $P{reportSection} + ")" : ""]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="450" y="53" width="70" height="23" uuid="b2c3d4e5-f6a7-8901-bcde-f12345678901"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[QC 類型:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rd46b470b4009}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="520" y="53" width="80" height="23" uuid="c3d4e5f6-a7b8-9012-cdef-123456789012"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -69,7 +69,7 @@ | |||
| <groupFooter> | |||
| <band height="19"> | |||
| <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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -77,8 +77,8 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[總出倉量:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rbca4ea568093}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="410" y="0" width="59" height="18" uuid="bef3e158-73d3-40dc-8cc7-29f93f54113f"/> | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| @@ -123,7 +123,7 @@ | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| </line> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -131,9 +131,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -141,9 +141,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -152,9 +152,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -163,9 +163,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -174,9 +174,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -184,9 +184,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -195,9 +195,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -205,9 +205,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -216,8 +216,8 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[出貨數量]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r1af196452b7a}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="1" y="98" width="800" height="1" uuid="d327fcf7-3dfa-4470-b0df-8199ac04ab46"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -248,7 +248,7 @@ | |||
| </textElement> | |||
| <text><![CDATA[/]]></text> | |||
| </staticText> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -256,8 +256,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="708" y="29" width="90" height="23" uuid="55961375-1d81-4195-ae09-dbad03027460"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -265,7 +265,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportTime}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -273,8 +273,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告時間:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="100" y="30" width="335" height="23" uuid="7e22315e-2b61-4d91-8c35-454a29a54440"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| @@ -282,7 +282,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -290,9 +290,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="pixel"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -301,14 +301,14 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[最後出倉日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r38aac4c4ec15}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="100" y="53" width="560" height="23" uuid="fb36cc91-4daf-439c-955e-148b0586bc95"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression> | |||
| <textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression> | |||
| </textField> | |||
| </band> | |||
| </pageHeader> | |||
| @@ -366,7 +366,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -374,8 +374,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <reportElement x="747" y="0" width="21" height="23" uuid="26d3d09c-48aa-4870-822a-c403e7faddfa"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| @@ -393,7 +393,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -401,8 +401,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="708" y="52" width="90" height="23" uuid="53b66bc3-4925-4340-add0-b4f2069a76c1"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -410,7 +410,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{year}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -418,9 +418,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -428,8 +428,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[年份:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rb568e0135677}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="708" y="29" width="90" height="23" uuid="cb1fbb06-e953-40e5-bdbe-5fc219f7c884"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -444,7 +444,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -452,8 +452,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[成品/半成品生產分析報告]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{reee4e96971fb}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="100" y="53" width="336" height="23" uuid="b51949e1-c40a-4db0-a799-4243555893fd"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -461,9 +461,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression> | |||
| <textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -472,8 +472,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[完成生產日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r73005a9bafd9}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="75" width="799" height="1" uuid="f04b0470-72e7-42b6-80fd-f1dc4ea5fa66"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -488,16 +488,16 @@ | |||
| </pageHeader> | |||
| <columnHeader> | |||
| <band height="28"> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="200" y="0" width="45" height="20" uuid="e4267f38-4a00-4a22-965d-9ab531262592"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| </reportElement> | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -505,9 +505,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -515,9 +515,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -525,9 +525,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -535,9 +535,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -545,9 +545,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -555,9 +555,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle" markup="html"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -565,9 +565,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -575,9 +575,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -585,9 +585,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -595,9 +595,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true" isItalic="false"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -605,9 +605,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -615,14 +615,14 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[四月]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r03ce1d5613e8}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="1" y="23" width="799" height="1" uuid="ad5d85ce-e7fe-46c0-9b37-76b2ed3f4152"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| </line> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -630,9 +630,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -640,9 +640,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -650,8 +650,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[貨品名稱]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression> | |||
| </textField> | |||
| </band> | |||
| </columnHeader> | |||
| </jasperReport> | |||
| @@ -200,7 +200,7 @@ | |||
| </background> | |||
| <pageHeader> | |||
| <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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -208,9 +208,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -219,9 +219,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -229,9 +229,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -240,10 +240,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -252,8 +251,8 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[盤盈虧]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r4876d5589e5b}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="100" y="30" width="335" height="23" uuid="849b3e33-5b07-41df-b761-2e2411d5d26e"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| @@ -261,7 +260,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -269,14 +268,14 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告時間:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="57" width="799" height="1" uuid="1c04b46e-491f-42a7-b8e0-2418dd068ace"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| </line> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -284,8 +283,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="708" y="29" width="90" height="23" uuid="dabd2770-cc5c-4337-8ba9-a09cd9fa2b32"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -310,7 +309,7 @@ | |||
| </textElement> | |||
| <text><![CDATA[/]]></text> | |||
| </staticText> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -318,8 +317,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression> | |||
| </textField> | |||
| <textField evaluationTime="Report"> | |||
| <reportElement x="768" y="0" width="30" height="23" uuid="de74acaa-0000-47f4-8358-825ac920082d"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -338,7 +337,7 @@ | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| </line> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -347,9 +346,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -357,9 +356,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -368,9 +367,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -379,9 +378,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="false"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -390,9 +389,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="false"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -401,8 +400,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="false"/> | |||
| </textElement> | |||
| <text><![CDATA[貨品名稱]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <reportElement x="720" y="58" width="78" height="28" uuid="722cd2e3-3d4a-4edd-a2fc-ca82fd34efb6"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| @@ -78,7 +78,7 @@ | |||
| <groupFooter> | |||
| <band height="19"> | |||
| <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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -87,8 +87,8 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[總上架數量:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf66b3d3ead11}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="280" y="0" width="50" height="18" uuid="d98c4478-22bd-4fd6-9be4-b3777f91de6d"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -140,7 +140,7 @@ | |||
| </group> | |||
| <pageHeader> | |||
| <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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -148,9 +148,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -159,9 +159,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -170,9 +170,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -181,9 +181,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -192,9 +192,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -203,10 +203,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -215,10 +214,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -227,9 +225,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -238,10 +236,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -250,9 +247,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -261,10 +258,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -273,9 +269,8 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[入庫檢查 | |||
| 缺陷數量]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r1f60da14d9c0}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="108" width="799" height="1" uuid="3190fa6b-3b27-4639-8de6-c93c8438ce35"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -288,7 +283,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -296,8 +291,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告時間:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="79" width="799" height="1" uuid="4ff25125-9aa9-4dae-8a3e-55ab708ed66a"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -308,9 +303,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{lastInDateStart} + " 至 " + $P{lastInDateEnd}]]></textFieldExpression> | |||
| <textFieldExpression><![CDATA[$P{lastInDateStart} + $R{r9f96f7e891cd} + $P{lastInDateEnd}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -318,8 +313,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="708" y="29" width="90" height="23" uuid="e751b9ba-1906-455c-a638-f3923a29c78b"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -344,7 +339,7 @@ | |||
| </textElement> | |||
| <text><![CDATA[/]]></text> | |||
| </staticText> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -352,9 +347,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="pixel"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -363,8 +358,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[最後入倉日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rdd672eea7e72}]]></textFieldExpression> | |||
| </textField> | |||
| <textField evaluationTime="Report"> | |||
| <reportElement x="768" y="0" width="30" height="23" uuid="3ef90e65-b07e-46d1-828a-7a345f96dc0d"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -366,7 +366,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -374,8 +374,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <reportElement x="747" y="0" width="21" height="23" uuid="26d3d09c-48aa-4870-822a-c403e7faddfa"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| @@ -393,7 +393,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -401,8 +401,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{re6eda806c6b1}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="738" y="52" width="60" height="23" uuid="53b66bc3-4925-4340-add0-b4f2069a76c1"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -410,7 +410,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{year}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -418,9 +418,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -428,8 +428,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[年份:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rb568e0135677}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="738" y="29" width="60" height="23" uuid="cb1fbb06-e953-40e5-bdbe-5fc219f7c884"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -444,7 +444,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{reportDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -452,8 +452,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[庫存材料消耗趨勢報告]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r909fd3cf3808}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="100" y="53" width="336" height="23" uuid="b51949e1-c40a-4db0-a799-4243555893fd"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -461,9 +461,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{lastOutDateStart} + " 至 " + $P{lastOutDateEnd}]]></textFieldExpression> | |||
| <textFieldExpression><![CDATA[$P{lastOutDateStart} + $R{r9f96f7e891cd} + $P{lastOutDateEnd}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -472,8 +472,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[材料消耗日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r0db83ab5ad90}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="76" width="799" height="1" uuid="c97a9d60-80d8-4bdb-b7ba-999b3959417b"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -488,16 +488,16 @@ | |||
| </pageHeader> | |||
| <columnHeader> | |||
| <band height="29"> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="200" y="0" width="45" height="20" uuid="e4267f38-4a00-4a22-965d-9ab531262592"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| </reportElement> | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -505,9 +505,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -515,9 +515,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -525,9 +525,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -535,9 +535,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -545,9 +545,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -555,9 +555,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle" markup="html"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -565,9 +565,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -575,9 +575,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -585,9 +585,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -595,9 +595,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true" isItalic="false"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -605,9 +605,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -615,14 +615,14 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[四月]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r03ce1d5613e8}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="0" y="24" width="799" height="1" uuid="ad5d85ce-e7fe-46c0-9b37-76b2ed3f4152"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| </line> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.width" value="px"/> | |||
| @@ -630,9 +630,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -640,9 +640,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -650,8 +650,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[貨品名稱]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r17f6b62ed896}]]></textFieldExpression> | |||
| </textField> | |||
| </band> | |||
| </columnHeader> | |||
| </jasperReport> | |||
| @@ -89,7 +89,7 @@ | |||
| <groupFooter> | |||
| <band height="19"> | |||
| <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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -98,8 +98,8 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[貨品總量:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r9460041e30e6}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="416" y="0" width="50" height="18" uuid="6c141d7d-766e-49bf-b987-e790312573a5"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -151,7 +151,7 @@ | |||
| </group> | |||
| <pageHeader> | |||
| <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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -159,8 +159,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[庫存明細報告]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r53fcb0cb5f04}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="2" y="55" width="799" height="1" uuid="33569f74-fee4-43c9-9bfe-b6bf7e12ecd4"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -171,7 +171,7 @@ | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| </line> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -179,9 +179,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -190,9 +190,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -201,9 +201,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -212,9 +212,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -222,9 +222,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -232,9 +232,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -243,9 +243,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -254,9 +254,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -264,10 +264,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -275,8 +274,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[到期日]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r11cb5e87977f}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <reportElement x="2" y="93" width="799" height="1" uuid="25601617-e2c7-4daf-829d-4525fdde0b6a"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -296,7 +295,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -304,8 +303,8 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[報告時間:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf3924122809a}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <reportElement x="747" y="0" width="21" height="23" uuid="98c8e822-fec6-445a-9d58-93bfb137f220"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| @@ -331,7 +330,7 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"/> | |||
| <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -339,9 +338,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -349,8 +348,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression> | |||
| </textField> | |||
| </band> | |||
| </pageHeader> | |||
| <detail> | |||
| @@ -152,7 +152,7 @@ | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| </line> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -160,8 +160,8 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="16" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[庫存盤點報告]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r4d7049a1bca9}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="717" y="0" width="30" height="23" uuid="2b671e24-ab30-4c72-8d3c-0e68a7b7cb36"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -181,7 +181,7 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </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> | |||
| <staticText> | |||
| <reportElement x="747" y="0" width="21" height="23" uuid="5a1b4b58-b7b1-48c9-b229-7e96392c6425"> | |||
| @@ -211,7 +211,7 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{stockTakeConditionLabel}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <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.height" value="px"/> | |||
| @@ -219,9 +219,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12" isBold="true"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -229,13 +229,13 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[頁數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r604d446aa100}]]></textFieldExpression> | |||
| </textField> | |||
| </band> | |||
| </pageHeader> | |||
| <columnHeader> | |||
| <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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -244,9 +244,9 @@ | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -255,9 +255,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -266,9 +266,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -277,9 +277,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -288,9 +288,9 @@ | |||
| <textElement textAlignment="Center" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -299,9 +299,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -310,9 +310,9 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -321,14 +321,14 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[盤點數]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rcfb0ffd45d73}]]></textFieldExpression> | |||
| </textField> | |||
| <line> | |||
| <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"/> | |||
| </reportElement> | |||
| </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"> | |||
| <property name="com.jaspersoft.studio.unit.y" value="px"/> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -337,8 +337,8 @@ | |||
| <textElement textAlignment="Right" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10"/> | |||
| </textElement> | |||
| <text><![CDATA[類型]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r469fb16b34e6}]]></textFieldExpression> | |||
| </textField> | |||
| </band> | |||
| </columnHeader> | |||
| <detail> | |||
| @@ -38,20 +38,20 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="10" y="14" width="80" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/> | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </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"/> | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[供應商:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="90" y="42" width="150" height="16" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -62,13 +62,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="10" y="97" width="80" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/> | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[物料編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r3a4716a37bef}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="90" y="97" width="150" height="16" uuid="1f289946-b945-4f79-8515-212368b8be3b"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -79,13 +79,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{itemNo}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="10" y="163" width="80" height="16" uuid="53a2d7cf-bd50-4264-abee-346823cd49dd"/> | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[數量:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="StretchHeight"> | |||
| <reportElement x="90" y="163" width="150" height="16" uuid="629d9af8-c73f-4614-ba9d-a582e2ed4a29"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -103,15 +103,15 @@ | |||
| </reportElement> | |||
| <imageExpression><![CDATA[$F{qrCode}]]></imageExpression> | |||
| </image> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="10" y="209" width="80" height="16" uuid="c62ac00a-c495-462c-93bc-97bdd3cdb395"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| </reportElement> | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[收貨日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="90" y="209" width="150" height="16" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -122,13 +122,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="10" y="70" width="80" height="16" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/> | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[採購訂單編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="90" y="70" width="150" height="16" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -139,13 +139,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$P{poCode}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="10" y="125" width="80" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/> | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[物料名稱:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="StretchHeight"> | |||
| <reportElement x="90" y="125" width="150" height="16" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"> | |||
| <property name="com.jaspersoft.studio.unit.width" value="px"/> | |||
| @@ -156,13 +156,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{itemName}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="10" y="237" width="80" height="16" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/> | |||
| <textElement textAlignment="Left"> | |||
| <font fontName="微軟正黑體" size="12"/> | |||
| </textElement> | |||
| <text><![CDATA[到期日:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression> | |||
| </textField> | |||
| <textField> | |||
| <reportElement x="90" y="237" width="150" height="16" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"> | |||
| <property name="com.jaspersoft.studio.unit.height" value="px"/> | |||
| @@ -30,13 +30,13 @@ | |||
| </background> | |||
| <detail> | |||
| <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"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="18" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[收貨日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="116" y="0" width="301" height="56" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -44,13 +44,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="56" width="108" height="56" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="18" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[到期日:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="116" y="56" width="301" height="56" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -58,13 +58,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="114" width="230" height="18" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[批次編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="132" width="230" height="20" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -72,20 +72,20 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="152" width="108" height="18" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[數量:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="170" width="108" height="28" uuid="1f289946-b945-4f79-8515-212368b8be3b"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -109,13 +109,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="200" width="230" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[物料名稱:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="216" width="230" height="30" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -127,13 +127,13 @@ | |||
| <reportElement x="248" y="112" width="166" height="166" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/> | |||
| <imageExpression><![CDATA[$F{qrCode}]]></imageExpression> | |||
| </image> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="248" width="42" height="14" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="8"/> | |||
| </textElement> | |||
| <text><![CDATA[供應商:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="50" y="248" width="188" height="14" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| @@ -141,13 +141,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="262" width="76" height="14" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="8"/> | |||
| </textElement> | |||
| <text><![CDATA[採購訂單編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="84" y="262" width="154" height="14" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| @@ -30,13 +30,13 @@ | |||
| </background> | |||
| <detail> | |||
| <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"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="18" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[收貨日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="116" y="0" width="301" height="56" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -44,13 +44,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="56" width="108" height="56" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="18" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[到期日:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="116" y="56" width="301" height="56" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -58,13 +58,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="114" width="286" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[批次編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="130" width="286" height="20" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -72,20 +72,20 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="152" width="140" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[數量:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="168" width="140" height="26" uuid="1f289946-b945-4f79-8515-212368b8be3b"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -109,13 +109,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="200" width="290" height="18" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[物料名稱:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="218" width="290" height="58" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -127,13 +127,13 @@ | |||
| <reportElement x="308" y="116" width="108" height="108" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/> | |||
| <imageExpression><![CDATA[$F{qrCode}]]></imageExpression> | |||
| </image> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="308" y="226" width="108" height="12" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="8"/> | |||
| </textElement> | |||
| <text><![CDATA[供應商:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="308" y="238" width="108" height="14" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| @@ -141,13 +141,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="308" y="252" width="108" height="12" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="8"/> | |||
| </textElement> | |||
| <text><![CDATA[採購訂單編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="308" y="264" width="108" height="14" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| @@ -30,13 +30,13 @@ | |||
| </background> | |||
| <detail> | |||
| <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"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="11" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[收貨日期:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r8689d87a0ff1}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="4" y="16" width="222" height="52" uuid="74a5cfba-046d-42f4-92d7-113729514a6f"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -44,13 +44,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{productionDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="4" y="70" width="222" height="16" uuid="32edcad1-23c1-4d41-8c9a-352d9e6ef377"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="11" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[到期日:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rf79aab5b7eed}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="4" y="86" width="222" height="52" uuid="97e4a9bb-fc84-4074-b523-ddf9eb9ed2d2"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -58,20 +58,20 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{expiryDate}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="142" width="104" height="16" uuid="96d46fb1-939d-4f3e-b8f0-172b69b85e9f"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </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"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[數量:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r8404b57157c6}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="158" width="118" height="34" uuid="1f289946-b945-4f79-8515-212368b8be3b"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -95,13 +95,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{qtyDetail}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="196" width="218" height="16" uuid="5c3f9b03-222c-4c94-ab58-6bc86d44c5ce"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[物料名稱:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r5d526c7219e5}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="8" y="212" width="218" height="64" uuid="e04b094d-2d16-4060-b6d9-2e6033a673ab"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -113,13 +113,13 @@ | |||
| <reportElement x="230" y="4" width="190" height="190" uuid="5dd35c73-973b-4f0d-9cad-13305a29a9fd"/> | |||
| <imageExpression><![CDATA[$F{qrCode}]]></imageExpression> | |||
| </image> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="230" y="196" width="190" height="16" uuid="f5f145f1-123f-4fe5-90fa-8550b3d2eb63"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="10" isBold="true"/> | |||
| </textElement> | |||
| <text><![CDATA[批次編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{rd27e4a4ff359}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="230" y="212" width="190" height="26" uuid="402f35fc-b11a-4bf1-982d-e12c622f38ea"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| @@ -127,13 +127,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{lotNo}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="230" y="240" width="42" height="16" uuid="c2041205-51f8-45bb-a1d1-e3de37eebed7"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="8"/> | |||
| </textElement> | |||
| <text><![CDATA[供應商:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r60650ec2d16b}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="272" y="240" width="148" height="16" uuid="ab82ca39-8840-4471-b7c0-cdeec9cb5693"/> | |||
| <textElement verticalAlignment="Middle"> | |||
| @@ -141,13 +141,13 @@ | |||
| </textElement> | |||
| <textFieldExpression><![CDATA[$F{supplier}]]></textFieldExpression> | |||
| </textField> | |||
| <staticText> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="230" y="258" width="72" height="16" uuid="1b1efafd-049a-432e-93c4-9662273011f7"/> | |||
| <textElement textAlignment="Left" verticalAlignment="Middle"> | |||
| <font fontName="微軟正黑體" size="8"/> | |||
| </textElement> | |||
| <text><![CDATA[採購訂單編號:]]></text> | |||
| </staticText> | |||
| <textFieldExpression><![CDATA[$R{r659a9e9a692d}]]></textFieldExpression> | |||
| </textField> | |||
| <textField textAdjust="ScaleFont" isBlankWhenNull="true"> | |||
| <reportElement x="302" y="258" width="118" height="16" uuid="b805e20a-9a36-45c8-8255-23b6cc58f47c"/> | |||
| <textElement verticalAlignment="Middle"> | |||