diff --git a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DeliveryOrderService.kt b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DeliveryOrderService.kt index a5e7efc..fa3939d 100644 --- a/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DeliveryOrderService.kt +++ b/src/main/java/com/ffii/fpsms/modules/deliveryOrder/service/DeliveryOrderService.kt @@ -1360,7 +1360,11 @@ open class DeliveryOrderService( } params["deliveryNoteCode"] = doPickOrderRecord.deliveryNoteCode ?: "" params["shopAddress"] = cartonLabelInfo[0].shopAddress ?: "" - params["shopName"] = doPickOrderRecord.shopName ?: cartonLabelInfo[0].shopName ?: "" + val rawShopLabel = doPickOrderRecord.shopName ?: cartonLabelInfo[0].shopName ?: "" + val parsedShopLabel = parseShopLabelForCartonLabel(rawShopLabel) + params["shopCode"] = parsedShopLabel.shopCode + params["shopCodeAbbr"] = parsedShopLabel.shopCodeAbbr + params["shopName"] = parsedShopLabel.shopNameForLabel params["truckNo"] = doPickOrderRecord.truckLanceCode ?: "" for (cartonNumber in 1..request.numOfCarton) { @@ -1374,6 +1378,44 @@ open class DeliveryOrderService( ) } + private data class ParsedShopLabelForCartonLabel( + val shopCode: String, + val shopCodeAbbr: String, + val shopNameForLabel: String + ) + + private fun parseShopLabelForCartonLabel(rawInput: String): ParsedShopLabelForCartonLabel { + // Fixed input format: shopCode - shopName1-shopName2 + val raw = rawInput.trim() + + val (shopCodePartRaw, restPart) = raw.split(" - ", limit = 2).let { parts -> + (parts.getOrNull(0)?.trim().orEmpty()) to (parts.getOrNull(1)?.trim().orEmpty()) + } + + val shopCode = shopCodePartRaw.let { code -> + val trimmed = code.trim() + if (trimmed.length > 5) trimmed.substring(0, 5) else trimmed + } + + val (shopName1, shopName2) = restPart.split("-", limit = 2).let { parts -> + (parts.getOrNull(0)?.trim().orEmpty()) to (parts.getOrNull(1)?.trim().orEmpty()) + } + + val shopNameForLabel = if (shopName2.isNotBlank()) { + "$shopName1\n$shopName2" + } else { + shopName1 + } + + val shopCodeAbbr = if (shopCode.length >= 2) shopCode.substring(0, 2) else shopCode + + return ParsedShopLabelForCartonLabel( + shopCode = shopCode, + shopCodeAbbr = shopCodeAbbr, + shopNameForLabel = shopNameForLabel + ) + } + //Print Carton Labels @Transactional diff --git a/src/main/resources/DeliveryNote/DeliveryNoteCartonLabelsPDF.jrxml b/src/main/resources/DeliveryNote/DeliveryNoteCartonLabelsPDF.jrxml index bd6161c..953bdd4 100644 --- a/src/main/resources/DeliveryNote/DeliveryNoteCartonLabelsPDF.jrxml +++ b/src/main/resources/DeliveryNote/DeliveryNoteCartonLabelsPDF.jrxml @@ -1,166 +1,180 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/fonts/fonts.xml b/src/main/resources/fonts/fonts.xml index 13d0ae2..79d3016 100644 --- a/src/main/resources/fonts/fonts.xml +++ b/src/main/resources/fonts/fonts.xml @@ -2,7 +2,7 @@ fonts/msjh_0.ttf - fonts/msjhbd.ttc + fonts/msjh_0.ttf fonts/msjh_0.ttf fonts/msjh_0.ttf Identity-H @@ -24,5 +24,4 @@ '華文宋體', Arial, Helvetica, sans-serif - - + \ No newline at end of file diff --git a/src/main/resources/fonts/msjhbd.ttc b/src/main/resources/fonts/msjhbd.ttc deleted file mode 100644 index 33873b7..0000000 Binary files a/src/main/resources/fonts/msjhbd.ttc and /dev/null differ