fix(firstleg): settle zero-package measurements safely

This commit is contained in:
2026-08-25 13:43:22 +08:00
parent 6d8e4c85c5
commit 0302985f21
2 changed files with 16 additions and 3 deletions
@@ -136,6 +136,18 @@ class PdaSplitSettlementSqlContractTest {
.contains("plan_item.package_count = pick_item.picked_package_count");
}
@Test
void zeroPackageSettlementNeverWritesNullVolumeWeight() throws Exception {
String update = String.join(" ", InboundSplitSettlementMapper.class.getMethod(
"updateMeasurementItemForLoaded", long.class, long.class, int.class)
.getAnnotation(Update.class).value()).replaceAll("\\s+", " ");
assertThat(update)
.contains("volume_weight_kg=CASE WHEN #{packageCount}=0 THEN 0")
.contains("COALESCE(volume_weight_kg/NULLIF(package_count,0)*#{packageCount},0)");
assertThat(update.indexOf("volume_weight_kg=")).isLessThan(update.indexOf("package_count=#{packageCount}"));
}
@Test
void keepsAllocationConfirmedUntilReleaseStep() throws Exception {
String consume = InboundPalletAllocationMapper.class.getMethod("consume",