diff --git a/FS25_ADSmartPickup/adRuns.lua b/FS25_ADSmartPickup/adRuns.lua
index 79bf21f..0884145 100644
--- a/FS25_ADSmartPickup/adRuns.lua
+++ b/FS25_ADSmartPickup/adRuns.lua
@@ -361,6 +361,20 @@ function ADRuns.pruneMissingVehicles(store, exists)
return new, missing
end
+-- Én besked pr. berørt flow efter pruneMissingVehicles: {runName, removed, left, critical} (critical = flowet
+-- står uden traktorer og virker ikke). I samme rækkefølge som flowene.
+function ADRuns.pruneNotices(storeAfter, removed)
+ local byName = {}
+ for _, entry in ipairs(removed or {}) do byName[entry.runName] = (byName[entry.runName] or 0) + 1 end
+ local notices = {}
+ for _, run in ipairs(storeAfter.runs) do
+ if byName[run.name] ~= nil then
+ table.insert(notices, {runName = run.name, removed = byName[run.name], left = #run.vehicleIds, critical = #run.vehicleIds == 0})
+ end
+ end
+ return notices
+end
+
-- En traktor er kun i ét run. Returnerer ny store + id på det run den blev flyttet FRA (nil = ingen).
function ADRuns.assignVehicle(store, runId, vehicleId)
local previous = ADRuns.findRunByVehicle(store, vehicleId)
diff --git a/FS25_ADSmartPickup/adRunsController.lua b/FS25_ADSmartPickup/adRunsController.lua
index db268b2..8ee9980 100644
--- a/FS25_ADSmartPickup/adRunsController.lua
+++ b/FS25_ADSmartPickup/adRunsController.lua
@@ -1513,6 +1513,14 @@ function ADRunsController.pruneMissingVehicles(adEnv)
Logging.info(ADRunsController.LOG_PREFIX .. "run '%s': køretøj %s findes ikke længere — fjernet fra flowet", tostring(entry.runName), tostring(entry.vehicleId))
end
ADRunsController.save()
+ -- besked på skærmen (højre side); rød når flowet står uden traktorer
+ if ADFieldJobs ~= nil and ADFieldJobs.notify ~= nil and g_i18n ~= nil then
+ for _, notice in ipairs(ADRuns.pruneNotices(store, removed)) do
+ local text = notice.critical and string.format(g_i18n:getText("spu_prune_empty"), notice.runName)
+ or string.format(g_i18n:getText("spu_prune_removed"), notice.runName, notice.removed, notice.left)
+ ADFieldJobs.notify(text, notice.critical)
+ end
+ end
end
function ADRunsController.installSaveHook()
diff --git a/FS25_ADSmartPickup/l10n/l10n_da.xml b/FS25_ADSmartPickup/l10n/l10n_da.xml
index 10af68a..676de04 100644
--- a/FS25_ADSmartPickup/l10n/l10n_da.xml
+++ b/FS25_ADSmartPickup/l10n/l10n_da.xml
@@ -261,6 +261,8 @@
+
+
diff --git a/FS25_ADSmartPickup/l10n/l10n_en.xml b/FS25_ADSmartPickup/l10n/l10n_en.xml
index 769f5f2..6ada825 100644
--- a/FS25_ADSmartPickup/l10n/l10n_en.xml
+++ b/FS25_ADSmartPickup/l10n/l10n_en.xml
@@ -261,6 +261,8 @@
+
+
diff --git a/FS25_ADSmartPickup/modDesc.xml b/FS25_ADSmartPickup/modDesc.xml
index 116f0ca..f17f3db 100644
--- a/FS25_ADSmartPickup/modDesc.xml
+++ b/FS25_ADSmartPickup/modDesc.xml
@@ -1,7 +1,7 @@
masterdraco
- 1.59.6.0
+ 1.59.7.0
AD Smart Pickup
diff --git a/tests/test_adRuns.lua b/tests/test_adRuns.lua
index 779c8dd..fc82f5f 100644
--- a/tests/test_adRuns.lua
+++ b/tests/test_adRuns.lua
@@ -360,5 +360,18 @@ do
local _, none = ADRuns.pruneMissingVehicles(st, function() return false end)
check("prune: alle mangler -> intet fjernes", #none, 0)
end
+-- beskeder på skærmen efter oprydning: én pr. flow; rød når flowet står uden traktorer
+do
+ local st, r1 = ADRuns.createRun(ADRuns.newStore(), "TMR", "supply")
+ local st2, r2 = ADRuns.createRun(st, "Solo", "supply")
+ st2 = ADRuns.assignVehicle(st2, r1.id, "keep")
+ st2 = ADRuns.assignVehicle(st2, r1.id, "gone1")
+ st2 = ADRuns.assignVehicle(st2, r2.id, "gone2")
+ local pruned, removed = ADRuns.pruneMissingVehicles(st2, function(id) return id == "keep" end)
+ local notes = ADRuns.pruneNotices(pruned, removed)
+ check("besked: én pr. flow", #notes, 2)
+ check("besked: TMR har traktorer tilbage", notes[1].runName .. "/" .. notes[1].left .. "/" .. tostring(notes[1].critical), "TMR/1/false")
+ check("besked: Solo står tom -> rød", notes[2].runName .. "/" .. notes[2].left .. "/" .. tostring(notes[2].critical), "Solo/0/true")
+end
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
os.exit(failures == 0 and 0 or 1)