From 6116855cb6fe40a52bd59bdca39dcb46f92da7b4 Mon Sep 17 00:00:00 2001 From: Dany wm De Bontridder Date: Fri, 13 Aug 2021 19:27:24 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20Bug=20:=20Pr=C3=A9vision=20,=20erreur=20s?= =?UTF-8?q?i=20on=20soustrait=20un=20montant=20n=C3=A9gatif?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/lib/impress.class.php | 10 ++++++---- unit-test/include/class/impressTest.class.php | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/lib/impress.class.php b/include/lib/impress.class.php index e5979383d..5de36f3fe 100644 --- a/include/lib/impress.class.php +++ b/include/lib/impress.class.php @@ -107,7 +107,7 @@ class Impress $amount=\Impress::compute_amount($p_cn,$line,$cond." ".$p_sql,$cond_anc." ".$p_sql); - $p_formula=str_replace($x[0], $amount, $p_formula); + $p_formula=str_replace($x[0],"(". $amount.")", $p_formula); } } @@ -119,9 +119,11 @@ class Impress */ $p_formula=remove_divide_zero($p_formula); $p_formula="\$result=".$p_formula.";"; - - eval("$p_formula"); - + try { + eval("$p_formula"); + } catch(Exception $e) { + return array("desc"=>"erreur","montant"=>'0'); + } while (preg_match("/\[([0-9]+)(-[Tt]*)\]/", trim($p_label), $e)==1) { $nom="!!".$e[1]."!!"; diff --git a/unit-test/include/class/impressTest.class.php b/unit-test/include/class/impressTest.class.php index 62a5e87f3..c5ea2a7fd 100644 --- a/unit-test/include/class/impressTest.class.php +++ b/unit-test/include/class/impressTest.class.php @@ -247,6 +247,7 @@ class ImpressTest extends TestCase array("sum FOURNI1 Débit", "{FOURNI1-d}",221.43), array("sum FOURNI1 Débit", "{NOTEXIST-d}",0), array("sum FOURNI1 Débit", "{{NOTEXIST-d}}",0), + array("Double minus sign throw an error ParseError: syntax error, unexpected '--' (T_DEC) ", "[6%-S]-[6%-S]",0), ); // ------ Periode ---------- foreach ($a_formula as $formula)