From 8f9b2cd07c3b688ea6fdfb41da9cedda6364eeb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alo=C3=AFs=20Micard?= Date: Fri, 9 Jun 2023 16:38:35 +0200 Subject: [PATCH] Fixes --- htdocs/install/repair.php | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php index d0c7306b4f2..8e6c384703e 100644 --- a/htdocs/install/repair.php +++ b/htdocs/install/repair.php @@ -1517,12 +1517,11 @@ if ($ok && GETPOST('repair_supplier_order_duplicate_ref')) { $db->begin(); + $err = 0; + // Query to find all duplicate supplier orders - $dbPrefix = MAIN_DB_PREFIX; - $sql = << 1); -SQL; + $sql = "SELECT * FROM " . MAIN_DB_PREFIX . "commande_fournisseur"; + $sql .= " WHERE ref IN (SELECT cf.ref FROM " . MAIN_DB_PREFIX . "commande_fournisseur cf GROUP BY cf.ref, cf.entity HAVING COUNT(cf.rowid) > 1)"; // Build a list of ref => []CommandeFournisseur $duplicateSupplierOrders = []; @@ -1534,6 +1533,8 @@ SQL; $duplicateSupplierOrders[$rawSupplierOrder->ref] [] = $supplierOrder; } + } else { + $err++; } // Process all duplicate supplier order and regenerate the reference for all except the first one @@ -1546,12 +1547,18 @@ SQL; $newRef = $supplierOrder->getNextNumRef($soc); - $sql = 'update ' . MAIN_DB_PREFIX . 'commande_fournisseur cf set cf.ref = "' . $db->escape($newRef) . '" where cf.rowid = ' . (int) $supplierOrder->id; - $db->query($sql); + $sql = "UPDATE " . MAIN_DB_PREFIX . "commande_fournisseur cf SET cf.ref = '" . $db->escape($newRef) . "' WHERE cf.rowid = " . (int)$supplierOrder->id; + if (!$db->query($sql)) { + $err++; + } } } - $db->commit(); + if ($err == 0) { + $db->commit(); + } else { + $db->rollback(); + } } print '';