(function (D) { D.parseCSV = function (csvText) { const lines = csvText.trim().split('\n'); if (lines.length < 2) return []; return lines.slice(1).filter(l => l.trim()).map(line => { const cols = line.split(';'); const operatie = cols[1].trim(); return { order: cols[0].trim(), operatie: operatie, orderKey: cols[0].trim() + '/' + operatie.padStart(4, '0'), objectsoort: cols[2].trim(), omschrijving: cols[3].trim(), startpunt: cols[4].trim(), eindpunt: cols[5].trim(), hoeveelheid: parseFloat(cols[6].replace(',', '.')), eenheid: cols[7].trim(), csvStatus: cols[8].trim(), inspecteur: cols[9] ? cols[9].trim() : '' }; }); }; D.getEffectiveStatus = function (order, orderStatuses) { return orderStatuses[order.orderKey] || order.csvStatus; }; D.isCompleted = function (order, orderStatuses) { const s = D.getEffectiveStatus(order, orderStatuses); return s === 'Opname gereed' || s === 'Gereed'; }; })(window.App.Domain);