feat: 支持勾选部分档口入库码匹配 (#235)
This commit is contained in:
@@ -72,6 +72,48 @@ func TestPlanInnerCodeRows_同一远端明细不会占用两次(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestPlanInnerCodeRows_部分匹配保留未选记录的明细占用(t *testing.T) {
|
||||
selected := model.InnerCodeRecord{
|
||||
ID: 1, BusinessDate: "2026-08-15", OrderNumber: "ORDER",
|
||||
SpecRaw: "黑色,M", InnerCode: "DK1", SourceDuplicateCount: 1,
|
||||
}
|
||||
contextRecords := []model.InnerCodeRecord{
|
||||
selected,
|
||||
{ID: 2, BusinessDate: "2026-08-15", OrderNumber: "ORDER", DetailID: 99, Status: model.InnerCodeReady},
|
||||
}
|
||||
reserved := innerCodeReservedDetails(contextRecords, map[int64]bool{selected.ID: true})
|
||||
detail := syb.StockDetail{ID: 10, Details: []syb.DetailItem{innerCodeTestItem(99, "黑色,M", nil)}}
|
||||
plans := planInnerCodeRowsWithReserved(
|
||||
[]model.InnerCodeRecord{selected},
|
||||
map[string][]int64{"ORDER": {10}},
|
||||
map[int64]syb.StockDetail{10: detail},
|
||||
reserved,
|
||||
)
|
||||
if len(plans) != 1 || plans[0].Status != model.InnerCodeSkipped ||
|
||||
plans[0].ResultMessage != "符合条件的顺运宝商品已被同订单其他记录占用" {
|
||||
t.Fatalf("未选记录的明细占用没有生效: %+v", plans)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInnerCodeReservedDetails_选中记录释放自身旧占用(t *testing.T) {
|
||||
records := []model.InnerCodeRecord{
|
||||
{ID: 1, OrderNumber: "ORDER", DetailID: 99, Status: model.InnerCodeReady},
|
||||
{ID: 2, OrderNumber: "ORDER", DetailID: 100, Status: model.InnerCodeNeedsCheck},
|
||||
{ID: 3, OrderNumber: "ORDER", DetailID: 101, Status: model.InnerCodeSkipped},
|
||||
}
|
||||
reserved := innerCodeReservedDetails(records, map[int64]bool{1: true})
|
||||
if reserved["ORDER"][99] || !reserved["ORDER"][100] || reserved["ORDER"][101] {
|
||||
t.Fatalf("明细占用集合不正确: %+v", reserved)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUniquePositiveInnerCodeIDs_过滤无效和重复编号(t *testing.T) {
|
||||
got := uniquePositiveInnerCodeIDs([]int64{3, 0, -1, 3, 2})
|
||||
if len(got) != 2 || got[0] != 3 || got[1] != 2 {
|
||||
t.Fatalf("选中编号清理结果不正确: %v", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPlanInnerCodeRows_远端已是目标码(t *testing.T) {
|
||||
record := model.InnerCodeRecord{ID: 1, OrderNumber: "ORDER", SpecRaw: "黑色,M", InnerCode: "DK1", SourceDuplicateCount: 1}
|
||||
item := innerCodeTestItem(1, "黑色,M", map[string]any{"innerExpCode": "DK1"})
|
||||
|
||||
Reference in New Issue
Block a user