diff --git a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt index 33b6d49..d4a3834 100644 --- a/src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt +++ b/src/main/java/com/ffii/fpsms/modules/jobOrder/service/PlasticBagPrinterService.kt @@ -161,8 +161,8 @@ class PlasticBagPrinterService( .thenBy { it.jobOrderId }, ) - fun onPackExpiryFileStem(itemCodeLower: String, indexOneBased: Int): String = - "$itemCodeLower-$indexOneBased" + fun onPackExpiryFileStem(itemCodeLower: String, indexOneBased: Int, totalForItem: Int): String = + if (totalForItem > 1) "$itemCodeLower-$indexOneBased" else itemCodeLower /** ISO `yyyy-MM-dd`, compact `yyyyMMdd`, or already `Expiry Date yyyyMMdd`. */ fun formatLaserExpiryParam(expiryDate: String?): String { @@ -778,15 +778,22 @@ class PlasticBagPrinterService( .flatMap { (codeLower, orders) -> val sorted = sortOnPackExportJobOrders(orders, jobOrdersById) val selected = if (includeExpiry) sorted else listOfNotNull(sorted.firstOrNull()) - selected.mapIndexedNotNull { index, order -> + val items = selected.mapNotNull { order -> toOnPackBmpExportItem( codeLower = codeLower, - fileStem = if (includeExpiry) onPackExpiryFileStem(codeLower, index + 1) else codeLower, + fileStem = codeLower, order = order, expiryPrintNames = expiryPrintNames, jobOrder = jobOrdersById[order.jobOrderId], ) } + if (includeExpiry) { + items.mapIndexed { index, item -> + item.copy(fileStem = onPackExpiryFileStem(codeLower, index + 1, items.size)) + } + } else { + items + } } require(exportItemsRaw.isNotEmpty()) { "No OnPack QR files could be generated for the selected date" } diff --git a/src/test/kotlin/com/ffii/fpsms/modules/jobOrder/service/OnPackExpiryZipStemTest.kt b/src/test/kotlin/com/ffii/fpsms/modules/jobOrder/service/OnPackExpiryZipStemTest.kt index 0ec0a81..92da893 100644 --- a/src/test/kotlin/com/ffii/fpsms/modules/jobOrder/service/OnPackExpiryZipStemTest.kt +++ b/src/test/kotlin/com/ffii/fpsms/modules/jobOrder/service/OnPackExpiryZipStemTest.kt @@ -8,9 +8,10 @@ import org.junit.jupiter.api.Test class OnPackExpiryZipStemTest { @Test - fun expiry_file_stem_appends_one_based_index() { - assertEquals("pp2211-1", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 1)) - assertEquals("pp2211-2", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 2)) + fun expiry_file_stem_suffixes_only_when_item_has_more_than_one_job() { + assertEquals("pp2211", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 1, 1)) + assertEquals("pp2211-1", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 1, 2)) + assertEquals("pp2211-2", PlasticBagPrinterService.onPackExpiryFileStem("pp2211", 2, 2)) } @Test