fix: autoload-køretøjer måles i paller, ikke liter — en tom pallebil er ikke 'ingen vogn' (v1.12.8.0)
This commit is contained in:
@@ -102,6 +102,10 @@ local function getVehicleCapacity(adEnv, vehicle)
|
||||
hasAutoload = true
|
||||
end
|
||||
end
|
||||
-- UAL opgiver antal paller (læssede + 1), ikke liter: liter-kapaciteten er ukendt for en pallebil
|
||||
if hasAutoload and (capacity == nil or capacity < 100) then
|
||||
capacity = nil
|
||||
end
|
||||
return capacity, hasAutoload, trailers
|
||||
end
|
||||
|
||||
|
||||
@@ -260,6 +260,8 @@ end
|
||||
|
||||
-- ---- validering ----
|
||||
|
||||
-- Liter-kapacitet for vognen; nil uden vogn. Universal Autoload opgiver ikke liter men ANTAL paller
|
||||
-- (læssede + 1), så et autoload-køretøj får nil her og markeres via isAutoload i valideringen.
|
||||
local function getLoadCapacity(adEnv, vehicle)
|
||||
local trailers = adEnv.AutoDrive.getAllUnits(vehicle)
|
||||
if trailers == nil then
|
||||
@@ -402,7 +404,7 @@ local function validateOutboundVehicle(adEnv, run, vehicle, result)
|
||||
result.reason = "noSource"
|
||||
return result
|
||||
end
|
||||
if result.capacity == nil then
|
||||
if result.capacity == nil and not result.isAutoload then
|
||||
result.reason = "noTrailer"
|
||||
return result
|
||||
end
|
||||
@@ -458,7 +460,7 @@ end
|
||||
-- udkørsel desuden "noSource" | "noProducts" | "needsAutoload".
|
||||
function ADRunsController.validateVehicle(adEnv, run, vehicle)
|
||||
local carriable = ADRunsController.getCarriableFillTypes(adEnv, vehicle)
|
||||
local result = {ok = false, carriable = carriable, capacity = getLoadCapacity(adEnv, vehicle)}
|
||||
local result = {ok = false, carriable = carriable, capacity = getLoadCapacity(adEnv, vehicle), isAutoload = hasAutoload(adEnv, vehicle)}
|
||||
if run.kind == "outbound" then
|
||||
return validateOutboundVehicle(adEnv, run, vehicle, result)
|
||||
end
|
||||
@@ -472,7 +474,8 @@ function ADRunsController.validateVehicle(adEnv, run, vehicle)
|
||||
result.reason = "noTarget"
|
||||
return result
|
||||
end
|
||||
if result.capacity == nil then
|
||||
-- en pallebil har ingen liter-kapacitet, men er ikke "uden vogn" — den falder på cannotCarry nedenfor
|
||||
if result.capacity == nil and not result.isAutoload then
|
||||
result.reason = "noTrailer"
|
||||
return result
|
||||
end
|
||||
|
||||
@@ -476,7 +476,9 @@ function SmartPickupFrame:describeVehicle(adEnv, run, vehicle, isInRun)
|
||||
local label = ADRunsController.getVehicleLabel(adEnv, vehicle)
|
||||
local validation = ADRunsController.validateVehicle(adEnv, run, vehicle)
|
||||
local parts = {label}
|
||||
if validation.capacity ~= nil then
|
||||
if validation.isAutoload and validation.capacity == nil then
|
||||
table.insert(parts, self.i18n:getText("spu_capacity_pallets"))
|
||||
elseif validation.capacity ~= nil then
|
||||
table.insert(parts, string.format(self.i18n:getText("spu_capacity"), g_i18n:formatNumber(validation.capacity, 0)))
|
||||
local carriable = self:describeCarriable(adEnv, run, vehicle, validation.carriable)
|
||||
if carriable ~= nil then
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
<text name="spu_renameTitle" text="Navn på run"/>
|
||||
<text name="spu_deleteConfirm" text="Slet run '%s'? Dets kørende traktorer stoppes. Kan ikke fortrydes."/>
|
||||
<text name="spu_capacity" text="%s l"/>
|
||||
<text name="spu_capacity_pallets" text="autoload (paller)"/>
|
||||
<text name="spu_tab_overview" text="Overblik"/>
|
||||
<text name="spu_tab_runs" text="Forsyning"/>
|
||||
<text name="spu_targets" text="Mål (vælg én eller flere — den der mangler mest, får turen)"/>
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
<text name="spu_renameTitle" text="Run name"/>
|
||||
<text name="spu_deleteConfirm" text="Delete run '%s'? Its running tractors will be stopped. This cannot be undone."/>
|
||||
<text name="spu_capacity" text="%s l"/>
|
||||
<text name="spu_capacity_pallets" text="autoload (pallets)"/>
|
||||
<text name="spu_tab_overview" text="Overview"/>
|
||||
<text name="spu_tab_runs" text="Supply"/>
|
||||
<text name="spu_targets" text="Targets (pick one or more — the neediest gets the trip)"/>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<modDesc descVersion="107">
|
||||
<author>masterdraco</author>
|
||||
<version>1.12.7.0</version>
|
||||
<version>1.12.8.0</version>
|
||||
<title>
|
||||
<en>AD Smart Pickup</en>
|
||||
</title>
|
||||
|
||||
@@ -429,6 +429,15 @@ check("O19 tipvogn tager bulk", input19b.products[1].isPallet, false)
|
||||
check("O19 bulk-mængde", input19b.products[1].sources[1].available, 150000)
|
||||
products[1] = {{fillType = SUGAR, name = "SUGAR", available = 5000, level = 5000, capacity = 180000, isPallet = false}}
|
||||
|
||||
-- O20: UAL-bil: AD's "kapacitet" er antal paller (læssede + 1) -> liter-kapacitet ukendt i planen
|
||||
local v20 = newVehicle("Dragon2", 100, 0, 1, true)
|
||||
v20.carriable = {}
|
||||
runs[v20] = outboundRun(21, {3}, {{fillType = "STRAW_BASKET", policy = "sell"}})
|
||||
local input20 = ADOutbound.buildPlanInput(adEnv, runs[v20], v20)
|
||||
check("O20 kapacitet ukendt for pallebil", input20.capacity, nil)
|
||||
check("O20 har autoload", input20.hasAutoload, true)
|
||||
check("O20 turen planlægges alligevel", ADOutboundPlanner.plan(input20) ~= nil, true)
|
||||
|
||||
-- O10: install wrapper: fejl i hook stopper ikke AD
|
||||
local calls = {}
|
||||
adEnv.LoadAtDestinationTask.update = function(self, dt) calls.update = (calls.update or 0) + 1 end
|
||||
|
||||
@@ -248,6 +248,15 @@ check("C7 sprunget over logges med årsag", skippedLogged, true)
|
||||
-- kapacitet under 100 l (kun trækkerens egne tanke) = ingen vogn
|
||||
local tinyCapacity = makeVehicle("vehicleTiny", "T255", {STRAW, TMR}, 1, 100, 0)
|
||||
check("C7 1 l kapacitet -> noTrailer", ADRunsController.validateVehicle(adEnv, ADRuns.getRun(ADRunsController.store, cow.id), tinyCapacity).reason, "noTrailer")
|
||||
-- UAL-køretøj: AutoDrive melder kapacitet i PALLER (læssede + 1), så en tom pallebil har "1" — det er ikke "ingen vogn"
|
||||
adEnv.AutoDrive.hasAL = function(_, unit) return unit.ual == true end
|
||||
local palletTruck = makeVehicle("vehicleDragon", "Dragon", {}, 1, 100, 0)
|
||||
palletTruck.trailers[1] = {ual = true}
|
||||
local truckValidation = ADRunsController.validateVehicle(adEnv, ADRuns.getRun(ADRunsController.store, cow.id), palletTruck)
|
||||
check("C7 pallebil: ikke noTrailer", truckValidation.reason ~= "noTrailer", true)
|
||||
check("C7 pallebil: kapacitet i paller markeret", truckValidation.isAutoload, true)
|
||||
check("C7 pallebil: liter-kapacitet ukendt", truckValidation.capacity, nil)
|
||||
adEnv.AutoDrive.hasAL = nil
|
||||
|
||||
-- C8: mål-markører (kun stalde og fabrikker — siloer tager alt og er ikke mål; stalde først,
|
||||
-- så fabrikker, så navn) og Wait-puljer til dropdowns
|
||||
|
||||
Reference in New Issue
Block a user