fix(review): palle/bulk pr. kilde, pallefabrikker uden læssestation, hold-omdirigering, last ved Start, tomme kilder udelukkes, færre rutetjek, advarsler huskes, paller kun Fra/Salg

This commit is contained in:
2026-09-23 10:18:36 +02:00
parent d8d2ff3c3e
commit 43483bda76
9 changed files with 379 additions and 45 deletions
+24 -1
View File
@@ -357,6 +357,18 @@ local function getOutboundFillTypes(adEnv, run, vehicle)
return result, chosen, palletCount, canLoadPallets
end
-- Last på vognen ved Start: nil = tom vogn, waypoint-id = mål for lasten, false = intet mål.
local function getCargoTarget(adEnv, run, vehicle)
if ADUnloadWait == nil or ADUnloadWait.getRestLoad == nil or ADOutbound == nil or ADOutbound.planCargoTarget == nil then
return nil
end
local fillType, liters = ADUnloadWait.getRestLoad(adEnv, vehicle)
if fillType == nil or liters < 100 then
return nil
end
return ADOutbound.planCargoTarget(adEnv, run, vehicle, fillType, liters) or false
end
local function validateOutboundVehicle(adEnv, run, vehicle, result)
if #getRunSources(adEnv, run, ADSmartPickup.getFarmId(vehicle)) == 0 then
result.reason = "noSource"
@@ -375,6 +387,15 @@ local function validateOutboundVehicle(adEnv, run, vehicle, result)
result.reason = (palletCount == chosen and not canLoadPallets) and "needsAutoload" or "cannotCarry"
return result
end
-- Uden Wait-punkt ville traktoren holde ved kilden og læsse selv om planlæggeren sagde "vent".
if ADWaitPool ~= nil and #ADWaitPool.getCandidates(adEnv, run.waitPoolGroup) == 0 then
result.reason = "noWaitPoint"
return result
end
if getCargoTarget(adEnv, run, vehicle) == false then
result.reason = "cargoNoTarget"
return result
end
if isFarFromNetwork(adEnv, vehicle) then
result.reason = "farFromNetwork"
return result
@@ -523,7 +544,9 @@ local function applyOutboundRunToVehicle(adEnv, run, vehicle)
stateModule:setMode(adEnv.AutoDrive.MODE_PICKUPANDDELIVER)
local firstId = run.sourceWayPointIds[1]
stateModule:setFirstMarkerByWayPointId(firstId)
stateModule:setSecondMarkerByWayPointId(firstId)
-- Læsset vogn: AD kører først til aflæsning (2. markør) — dér skal lastens mål stå.
local cargoTarget = getCargoTarget(adEnv, run, vehicle)
stateModule:setSecondMarkerByWayPointId(cargoTarget or firstId)
local fillTypes = getOutboundFillTypes(adEnv, run, vehicle)
stateModule.selectedFillTypes = copyList(fillTypes)
if fillTypes[1] ~= nil then