From 8be52971968ad1b11bfc98f7f2fd33e1b776a091 Mon Sep 17 00:00:00 2001 From: Eduard Wisch Date: Tue, 19 May 2026 18:37:48 +0200 Subject: [PATCH] Sync-500: tms vor create/update explizit setzen [deploy] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nachtrag zum tms-Fix: explicit_defaults_for_timestamp=1 auf der Prod-DB — ein INSERT mit tms=NULL in die NOT-NULL-Spalte schlaegt fehl. createCommon fuegt tms aber als NULL ein, wenn die Property leer ist. Loesung: protocols.php setzt tms = dol_now() vor jedem create/update von Protokoll, Geraet und Messung. Damit landet ein gueltiger Zeitstempel im INSERT, kein NULL. Co-Authored-By: Claude Opus 4.7 (1M context) --- api/protocols.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/api/protocols.php b/api/protocols.php index 224f193..ac3e179 100644 --- a/api/protocols.php +++ b/api/protocols.php @@ -140,6 +140,9 @@ $protocol->standort = isset($p['location']) ? (string) $p['location'] : $protocol->subnet = isset($p['subnet']) ? (string) $p['subnet'] : ''; $protocol->status = isset($p['status']) ? (int) $p['status'] : NetDiagProtocol::STATUS_DRAFT; $protocol->note = isset($p['note']) ? (string) $p['note'] : ''; +// tms explizit setzen — die Spalte ist NOT NULL ohne brauchbaren NULL-Default +// (explicit_defaults_for_timestamp=1), createCommon würde sonst NULL einfügen. +$protocol->tms = dol_now(); if ($exists > 0) { $result = $protocol->update($user, 1); @@ -168,6 +171,7 @@ foreach ($devicesIn as $d) { $dev->vendor = isset($d['vendor']) ? (string) $d['vendor'] : ''; $dev->devicetype = isset($d['deviceType']) ? (string) $d['deviceType'] : ''; $dev->note = isset($d['note']) ? (string) $d['note'] : ''; + $dev->tms = dol_now(); if ($dev->create($user, 1) <= 0) { $db->rollback(); netdiag_api_error('Gerät speichern fehlgeschlagen: '.$dev->error, 500); @@ -191,6 +195,7 @@ foreach ($measIn as $m) { $meas->result = isset($m['result']) ? json_encode($m['result'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) : null; $meas->measure_status = isset($m['measureStatus']) ? (int) $m['measureStatus'] : 0; $meas->date_measure = !empty($m['dateMeasure']) ? (int) $m['dateMeasure'] : dol_now(); + $meas->tms = dol_now(); if ($meas->create($user, 1) <= 0) { $db->rollback(); netdiag_api_error('Messung speichern fehlgeschlagen: '.$meas->error, 500);