diff --git a/aufmass_order.php b/aufmass_order.php index ace4c81..733ba52 100644 --- a/aufmass_order.php +++ b/aufmass_order.php @@ -93,45 +93,77 @@ if (!empty($pwa_url)) { print ''; } -// Verknüpfte Aufmaß-Daten (Platzhalter für Backend-Integration) -print ''; -print ''; -print ''; -print ''; - -// Aufmaß-Daten aus dem ElektroPlan-Backend laden -$api_url = getDolGlobalString('EPLAN_PWA_URL'); +// Aufmaß-Daten aus dem ElektroPlan-Backend laden — nur das mit DIESEM Auftrag +// verknüpfte Projekt (über die Verknüpfungstabelle im Backend). +$api_url = rtrim(getDolGlobalString('EPLAN_PWA_URL'), '/'); +$projekt = null; $raeume = array(); if (!empty($api_url)) { - $ch = curl_init($api_url.'/api/projekte/'); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_TIMEOUT, 5); - $response = curl_exec($ch); - curl_close($ch); - if ($response) { - $projekte = json_decode($response, true); - if (is_array($projekte)) { - // TODO: Filter nach dolibarr_auftrag_id wenn Backend das unterstützt - foreach ($projekte as $p) { - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - } - } + // Kleiner GET-Helfer: liefert dekodiertes JSON-Array oder null + $eplan_get = function ($pfad) use ($api_url) { + $ch = curl_init($api_url.$pfad); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_TIMEOUT, 5); + $resp = curl_exec($ch); + $code = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + if ($resp === false || $code < 200 || $code >= 300) return null; + $daten = json_decode($resp, true); + return is_array($daten) ? $daten : null; + }; + + // Auftrag → projekt_id auflösen + $verkn = $eplan_get('/api/dolibarr/auftraege/'.((int) $object->id).'/projekt'); + $projekt_id = $verkn['projekt_id'] ?? null; + if (!empty($projekt_id)) { + $projekt = $eplan_get('/api/projekte/'.rawurlencode($projekt_id)); + $raeume = $eplan_get('/api/projekte/'.rawurlencode($projekt_id).'/raeume'); + if (!is_array($raeume)) $raeume = array(); } } -if (empty($raeume) && empty($projekte)) { + +print '
GrundrissEtageRäumeFlächeErstellt
'.dol_escape_htmltag($p['name'] ?? '-').'---'.dol_print_date(strtotime($p['erstellt'] ?? ''), 'day').''; - if (!empty($pwa_url)) { - print 'Öffnen'; - } - print '
'; +print ''; +print ''; +print ''; + +if (!empty($projekt)) { + // Gesamtfläche + Quellen aus den Räumen aggregieren + $flaeche = 0.0; + $quellen = array(); + foreach ($raeume as $r) { + $flaeche += (float) ($r['flaeche_m2'] ?? 0); + $q = $r['quelle'] ?? ''; + if ($q !== '' && !in_array($q, $quellen, true)) $quellen[] = $q; + } + $quelleLabel = empty($quellen) ? '-' : implode(', ', array_map(function ($q) { + return $q === 'aufmass' ? 'Baustelle' : ($q === 'editor' ? 'Editor' : $q); + }, $quellen)); + + // Öffnen-Link mit Auftrags-Kontext → PWA lädt das verknüpfte Projekt automatisch + $open_link = $pwa_url . '/?auftrag=' . urlencode($object->ref) + . '&kunde=' . urlencode($object->thirdparty->name ?? '') + . '&auftrag_id=' . ((int) $object->id); + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; +} else { print ''; }
GrundrissRäumeFlächeQuelleErstellt
'.dol_escape_htmltag($projekt['name'] ?? '-').''.count($raeume).''.($flaeche > 0 ? price($flaeche, 0, '', 0, 2).' m²' : '-').''.dol_escape_htmltag($quelleLabel).''.dol_print_date(strtotime($projekt['geaendert'] ?? $projekt['erstellt'] ?? ''), 'dayhour').''; + if (!empty($pwa_url)) { + print 'Öffnen'; + } + print '
'; - print 'Noch keine Aufmaße verknüpft. Starte ein neues Aufmaß über den Button oben.'; + if (empty($api_url)) { + print 'ElektroPlan-Backend nicht erreichbar (PWA-URL nicht konfiguriert).'; + } else { + print 'Noch kein Aufmaß mit diesem Auftrag verknüpft. Starte ein neues Aufmaß über den Button oben.'; + } print '