fix(dropship): preserve carton quantities and shared pallet outbound ownership
This commit is contained in:
+14
-5
@@ -290,7 +290,7 @@ class LoadingCompletedOutboxServiceTest {
|
||||
|
||||
@org.junit.jupiter.params.ParameterizedTest
|
||||
@org.junit.jupiter.params.provider.ValueSource(booleans = {true, false})
|
||||
void freezesRepeatedSkuCartonsBySourceDetailForBothPalletSources(boolean actualBinding) throws Exception {
|
||||
void freezesActualSkuCartonsAndRejectsInferredPalletSources(boolean actualBinding) throws Exception {
|
||||
Row first = row(11, 100, 101); first.setFulfillmentType("ONE_CLICK_DROPSHIP");
|
||||
first.setSkuCode("SAME-SKU"); first.setProductQuantity(10);
|
||||
Row second = row(11, 100, 102); second.setFulfillmentType("ONE_CLICK_DROPSHIP");
|
||||
@@ -305,6 +305,10 @@ class LoadingCompletedOutboxServiceTest {
|
||||
when(snapshots.palletRows(90L)).thenReturn(List.of(
|
||||
pallet(11,100,1,"DP-260909-0001",2,102,"SAME-SKU",1,20,"BOX-102"),
|
||||
pallet(11,100,1,"DP-260909-0001",2,101,"SAME-SKU",1,10,"BOX-101")));
|
||||
assertThatThrownBy(() -> service.publish(90L)).isInstanceOf(com.baiyue.common.core.exception.BizException.class)
|
||||
.hasMessageContaining("真实逐箱实收");
|
||||
verify(outbox, org.mockito.Mockito.never()).insert(org.mockito.ArgumentMatchers.any(InboundOutboxEntity.class));
|
||||
return;
|
||||
}
|
||||
service.publish(90L);
|
||||
service.publish(90L);
|
||||
@@ -320,6 +324,7 @@ class LoadingCompletedOutboxServiceTest {
|
||||
assertThat(sku.path("cartonMarks")).hasSize(1);
|
||||
assertThat(sku.path("cartonMarks").get(0).asText()).isEqualTo("BOX-" + detail);
|
||||
assertThat(sku.path("productQuantity").asInt()).isEqualTo("101".equals(detail) ? 10 : 20);
|
||||
assertThat(sku.path("cartonQuantities").path("BOX-" + detail).asInt()).isEqualTo("101".equals(detail) ? 10 : 20);
|
||||
}
|
||||
assertThat(frozen.get(0).path("sourceInboundDetailId"))
|
||||
.isNotEqualTo(frozen.get(1).path("sourceInboundDetailId"));
|
||||
@@ -332,10 +337,11 @@ class LoadingCompletedOutboxServiceTest {
|
||||
Row second = row(11, 100, 102); second.setFulfillmentType("ONE_CLICK_DROPSHIP");
|
||||
second.setPackageCount(1); second.setProductQuantity(5); second.setSkuCode("SKU-B");
|
||||
when(snapshots.rows(90L)).thenReturn(List.of(first, second));
|
||||
when(snapshots.palletRows(90L)).thenReturn(List.of(
|
||||
pallet(11,100,1,"PLT-01",2,101,"SKU-A",2,20,"BOX-001"),
|
||||
pallet(11,100,1,"PLT-01",2,101,"SKU-A",2,20,"BOX-002"),
|
||||
pallet(11,100,2,"PLT-02",1,102,"SKU-B",1,5,"BOX-003")));
|
||||
when(snapshots.workPalletCount(90L)).thenReturn(2);
|
||||
when(snapshots.actualPalletRows(90L)).thenReturn(List.of(
|
||||
actualPallet(11,100,"PLT-01",101,"SKU-A","BOX-001",7),
|
||||
actualPallet(11,100,"PLT-01",101,"SKU-A","BOX-002",13),
|
||||
actualPallet(11,100,"PLT-02",102,"SKU-B","BOX-003",5)));
|
||||
|
||||
service.publish(90L);
|
||||
|
||||
@@ -346,6 +352,8 @@ class LoadingCompletedOutboxServiceTest {
|
||||
assertThat(event.payload().at("/orders/0/customerId").asText()).isEqualTo("11");
|
||||
assertThat(event.payload().at("/orders/0/pallets")).hasSize(2);
|
||||
assertThat(event.payload().at("/orders/0/pallets/0/skuPackages/0/cartonMarks")).hasSize(2);
|
||||
assertThat(event.payload().at("/orders/0/pallets/0/skuPackages/0/cartonQuantities/BOX-001").asInt()).isEqualTo(7);
|
||||
assertThat(event.payload().at("/orders/0/pallets/0/skuPackages/0/cartonQuantities/BOX-002").asInt()).isEqualTo(13);
|
||||
assertThat(event.payload().at("/orders/0/palletCount").asInt()).isEqualTo(2);
|
||||
}
|
||||
|
||||
@@ -463,6 +471,7 @@ class LoadingCompletedOutboxServiceTest {
|
||||
String sku,String boxCode,int actualSkuQuantity) {
|
||||
PalletRow row = pallet(account,inbound,0,palletNo,1,detail,sku,1,1,boxCode);
|
||||
row.setActualBinding(true);
|
||||
row.setPalletId(Integer.toUnsignedLong(palletNo.hashCode()) + 1L);
|
||||
row.setActualSkuQuantity(actualSkuQuantity);
|
||||
return row;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user