| @@ -1362,8 +1362,9 @@ return MessageResponse( | |||||
| dop.deliveryNoteCode = CodeGenerator.generateNo(prefix = prefix, midfix = midfix, latestCode = latestCode) | dop.deliveryNoteCode = CodeGenerator.generateNo(prefix = prefix, midfix = midfix, latestCode = latestCode) | ||||
| } | } | ||||
| deliveryOrderPickOrderRepository.save(dop) | deliveryOrderPickOrderRepository.save(dop) | ||||
| } | |||||
| } | |||||
| markDeliveryOrdersCompletedForDeliveryOrderPickOrder(deliveryOrderPickOrderId) | |||||
| return MessageResponse( | return MessageResponse( | ||||
| id = dop.id, | id = dop.id, | ||||
| code = "SUCCESS", | code = "SUCCESS", | ||||
| @@ -2276,6 +2277,35 @@ return MessageResponse( | |||||
| """.trimIndent(), | """.trimIndent(), | ||||
| mapOf("dopId" to dopId, "deliveryNoteCode" to newDeliveryNoteCode), | mapOf("dopId" to dopId, "deliveryNoteCode" to newDeliveryNoteCode), | ||||
| ) | ) | ||||
| markDeliveryOrdersCompletedForDeliveryOrderPickOrder(dopId) | |||||
| } | |||||
| /** | |||||
| * When a workbench ticket ([delivery_order_pick_order]) is completed, align linked [delivery_order] headers. | |||||
| */ | |||||
| private fun markDeliveryOrdersCompletedForDeliveryOrderPickOrder(dopId: Long) { | |||||
| if (dopId <= 0L) return | |||||
| val rows = try { | |||||
| jdbcDao.queryForList( | |||||
| """ | |||||
| SELECT DISTINCT po.doId AS doId | |||||
| FROM fpsmsdb.pick_order po | |||||
| WHERE po.deliveryOrderPickOrderId = :dopId | |||||
| AND po.deleted = 0 | |||||
| AND po.doId IS NOT NULL | |||||
| """.trimIndent(), | |||||
| mapOf("dopId" to dopId), | |||||
| ) | |||||
| } catch (_: Exception) { | |||||
| emptyList() | |||||
| } | |||||
| for (row in rows) { | |||||
| val doId = (row["doId"] as? Number)?.toLong() ?: continue | |||||
| val deliveryOrder = deliveryOrderRepository.findByIdAndDeletedIsFalse(doId) ?: continue | |||||
| if (deliveryOrder.status == DeliveryOrderStatus.COMPLETED) continue | |||||
| deliveryOrder.status = DeliveryOrderStatus.COMPLETED | |||||
| deliveryOrder.completeDate = LocalDateTime.now() | |||||
| deliveryOrderRepository.save(deliveryOrder) | |||||
| } | |||||
| } | } | ||||
| private fun checkWorkbenchPickOrderLineCompleted(pickOrderLineId: Long, allStockOutLines: List<StockOutLineInfo>) { | private fun checkWorkbenchPickOrderLineCompleted(pickOrderLineId: Long, allStockOutLines: List<StockOutLineInfo>) { | ||||