From 35db492be1f8e4cf6eefeb19df0cce4d3ef09592 Mon Sep 17 00:00:00 2001 From: w3houde Date: Tue, 16 Jun 2026 02:07:48 +0200 Subject: [PATCH] Fix #38320 treat null/empty rang as auto in addline (Propal, Commande, Facture) (#38843) API callers like api_proposals.php postLine forward $request_data->rang unset, so null reaches addline. The '== -1' check does not match null and $ranktouse stays null, persisted as 0 - all lines then share rang=0 and the order propagates through createFromProposal / createFromOrder. Accept null and 0 alongside -1 so the auto-rank branch fires. Signed-off-by: Dolicraft Co-authored-by: Dolicraft --- htdocs/comm/propal/class/propal.class.php | 2 +- htdocs/commande/class/commande.class.php | 2 +- htdocs/compta/facture/class/facture.class.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index f36f261cc19..22dac7fa2a9 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -783,7 +783,7 @@ class Propal extends CommonObject // Rang to use $ranktouse = $rang; - if ($ranktouse == -1) { + if (empty($ranktouse) || $ranktouse == -1) { $rangmax = $this->line_max($fk_parent_line); $ranktouse = $rangmax + 1; } diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 960ea46ed30..1640c361d0b 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1763,7 +1763,7 @@ class Commande extends CommonOrder // Rang to use $ranktouse = $rang; - if ($ranktouse == -1) { + if (empty($ranktouse) || $ranktouse == -1) { $rangmax = $this->line_max($fk_parent_line); $ranktouse = $rangmax + 1; } diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 54ec34e1fd0..7898437bb39 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -4397,7 +4397,7 @@ class Facture extends CommonInvoice // Rank to use $ranktouse = $rang; - if ($ranktouse == -1) { + if (empty($ranktouse) || $ranktouse == -1) { $rangmax = $this->line_max($fk_parent_line); $ranktouse = $rangmax + 1; }