Loading code/Créateur de formule.php +20 −2 Changes for code/Créateur de formule.php: 20 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -58,8 +58,24 @@ switch ($action) { break; case 'aff': case 'gen': $intervenantQuery = null; $volumeHoraireQuery = null; try { $packageName = 'FORMULE_' . $fc->getName(); $pe = $bdd->select('SELECT id FROM formule WHERE package_name = :pn', ['pn' => $packageName]); if (!empty($pe)) { $intervenantQuery = trim(@$bdd->select("SELECT $packageName.INTERVENANT_QUERY Q FROM dual")[0]['Q']); $volumeHoraireQuery = trim(@$bdd->select("SELECT $packageName.VOLUME_HORAIRE_QUERY Q FROM dual")[0]['Q']); $intervenantQuery = str_replace("'", "''", $intervenantQuery); $volumeHoraireQuery = str_replace("'", "''", $volumeHoraireQuery); } } catch (\Exception $e) { } $def = $fc->makePackageDef(); $body = $fc->makePackageBody(); $body = $fc->makePackageBody($intervenantQuery, $volumeHoraireQuery); if ($action === 'gen') { try { Loading Loading @@ -97,6 +113,9 @@ function affCreateData(\Application\Model\FormuleCalcul $fc) $pe = $bdd->select('SELECT id FROM formule WHERE package_name = :pn', ['pn' => $packageName]); if (empty($pe)) { $newFormuleId = $bdd->select('SELECT max(id) + 1 nid FROM formule')[0]['NID']; } else { $newFormuleId = $pe[0]['ID']; } $array = [ 'LIBELLE' => '...', Loading Loading @@ -144,4 +163,3 @@ function affCreateData(\Application\Model\FormuleCalcul $fc) echo 'Puis lancer<pre>./bin/ose update-bdd-formules</pre>'; echo '</div>'; } No newline at end of file } No newline at end of file data/formule.sql +3 −20 Changes for data/formule.sql: 3 added lines, 20 removed lines. Original line number Diff line number Diff line Loading @@ -159,15 +159,7 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_<--NAME--> AS FUNCTION INTERVENANT_QUERY RETURN CLOB IS BEGIN RETURN ' SELECT fi.*, NULL param_1, NULL param_2, NULL param_3, NULL param_4, NULL param_5 FROM V_FORMULE_INTERVENANT fi <--INTERVENANT_QUERY--> '; END; Loading @@ -176,17 +168,8 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_<--NAME--> AS FUNCTION VOLUME_HORAIRE_QUERY RETURN CLOB IS BEGIN RETURN ' SELECT fvh.*, NULL param_1, NULL param_2, NULL param_3, NULL param_4, NULL param_5 FROM V_FORMULE_VOLUME_HORAIRE fvh ORDER BY ordre'; <--VOLUME_HORAIRE_QUERY--> '; END; END FORMULE_<--NAME-->; No newline at end of file module/Application/src/Model/FormuleCalcul.php +56 −1 Changes for module/Application/src/Model/FormuleCalcul.php: 56 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -308,8 +308,34 @@ END FORMULE_" . $this->getName() . ";"; public function makePackageBody(): string public function makePackageBody(?string $intervenantQuery = null, ?string $volumeHoraireQuery = null): string { if (!$intervenantQuery) { $intervenantQuery = 'SELECT fi.*, NULL param_1, NULL param_2, NULL param_3, NULL param_4, NULL param_5 FROM V_FORMULE_INTERVENANT fi'; } if (!$volumeHoraireQuery) { $volumeHoraireQuery = 'SELECT fvh.*, NULL param_1, NULL param_2, NULL param_3, NULL param_4, NULL param_5 FROM V_FORMULE_VOLUME_HORAIRE fvh ORDER BY ordre'; } $s = $this->getSheet(); $formules = []; Loading @@ -328,6 +354,33 @@ END FORMULE_" . $this->getName() . ";"; $cells = ''; /** @var Calc\Cell[] $formules */ foreach ($formules as $name => $cell) { /* On recherche les cases supplémentaires qui manqueraient */ $mls = (string)$this->mainLine; if (str_ends_with($name, $mls)) { $name = substr($name, 0, -strlen($mls)); } $deps = $cell->getDeps(); foreach ($deps as $dep) { $dep = str_replace('$', '', $dep); if (!array_key_exists($dep, $formules)) { $found = false; foreach ($cellsPos as $cp) { if ($cp . $mls === $dep) { $found = true; break; } } if (!$found) { $cellDep = $this->getSheet()->getCell($dep); $formules[$dep] = $cellDep; } } } } foreach ($formules as $name => $cell) { $expr = $cell->getFormuleExpr(); if ($this->exprIsTest($expr)) { Loading @@ -350,6 +403,8 @@ END FORMULE_" . $this->getName() . ";"; $body = str_replace('<--DECALAGE-->', $this->mainLine - 1, $body); $body = str_replace('<--CELLS-->', $cells, $body); $body = str_replace('<--NAME-->', $this->getName(), $body); $body = str_replace('<--INTERVENANT_QUERY-->', $intervenantQuery, $body); $body = str_replace('<--VOLUME_HORAIRE_QUERY-->', $volumeHoraireQuery, $body); foreach ($cellsPos as $param => $cell) { $body = str_replace("<--$param-->", "'" . $cell . "'", $body); } Loading Loading
code/Créateur de formule.php +20 −2 Changes for code/Créateur de formule.php: 20 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -58,8 +58,24 @@ switch ($action) { break; case 'aff': case 'gen': $intervenantQuery = null; $volumeHoraireQuery = null; try { $packageName = 'FORMULE_' . $fc->getName(); $pe = $bdd->select('SELECT id FROM formule WHERE package_name = :pn', ['pn' => $packageName]); if (!empty($pe)) { $intervenantQuery = trim(@$bdd->select("SELECT $packageName.INTERVENANT_QUERY Q FROM dual")[0]['Q']); $volumeHoraireQuery = trim(@$bdd->select("SELECT $packageName.VOLUME_HORAIRE_QUERY Q FROM dual")[0]['Q']); $intervenantQuery = str_replace("'", "''", $intervenantQuery); $volumeHoraireQuery = str_replace("'", "''", $volumeHoraireQuery); } } catch (\Exception $e) { } $def = $fc->makePackageDef(); $body = $fc->makePackageBody(); $body = $fc->makePackageBody($intervenantQuery, $volumeHoraireQuery); if ($action === 'gen') { try { Loading Loading @@ -97,6 +113,9 @@ function affCreateData(\Application\Model\FormuleCalcul $fc) $pe = $bdd->select('SELECT id FROM formule WHERE package_name = :pn', ['pn' => $packageName]); if (empty($pe)) { $newFormuleId = $bdd->select('SELECT max(id) + 1 nid FROM formule')[0]['NID']; } else { $newFormuleId = $pe[0]['ID']; } $array = [ 'LIBELLE' => '...', Loading Loading @@ -144,4 +163,3 @@ function affCreateData(\Application\Model\FormuleCalcul $fc) echo 'Puis lancer<pre>./bin/ose update-bdd-formules</pre>'; echo '</div>'; } No newline at end of file } No newline at end of file
data/formule.sql +3 −20 Changes for data/formule.sql: 3 added lines, 20 removed lines. Original line number Diff line number Diff line Loading @@ -159,15 +159,7 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_<--NAME--> AS FUNCTION INTERVENANT_QUERY RETURN CLOB IS BEGIN RETURN ' SELECT fi.*, NULL param_1, NULL param_2, NULL param_3, NULL param_4, NULL param_5 FROM V_FORMULE_INTERVENANT fi <--INTERVENANT_QUERY--> '; END; Loading @@ -176,17 +168,8 @@ CREATE OR REPLACE PACKAGE BODY FORMULE_<--NAME--> AS FUNCTION VOLUME_HORAIRE_QUERY RETURN CLOB IS BEGIN RETURN ' SELECT fvh.*, NULL param_1, NULL param_2, NULL param_3, NULL param_4, NULL param_5 FROM V_FORMULE_VOLUME_HORAIRE fvh ORDER BY ordre'; <--VOLUME_HORAIRE_QUERY--> '; END; END FORMULE_<--NAME-->; No newline at end of file
module/Application/src/Model/FormuleCalcul.php +56 −1 Changes for module/Application/src/Model/FormuleCalcul.php: 56 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -308,8 +308,34 @@ END FORMULE_" . $this->getName() . ";"; public function makePackageBody(): string public function makePackageBody(?string $intervenantQuery = null, ?string $volumeHoraireQuery = null): string { if (!$intervenantQuery) { $intervenantQuery = 'SELECT fi.*, NULL param_1, NULL param_2, NULL param_3, NULL param_4, NULL param_5 FROM V_FORMULE_INTERVENANT fi'; } if (!$volumeHoraireQuery) { $volumeHoraireQuery = 'SELECT fvh.*, NULL param_1, NULL param_2, NULL param_3, NULL param_4, NULL param_5 FROM V_FORMULE_VOLUME_HORAIRE fvh ORDER BY ordre'; } $s = $this->getSheet(); $formules = []; Loading @@ -328,6 +354,33 @@ END FORMULE_" . $this->getName() . ";"; $cells = ''; /** @var Calc\Cell[] $formules */ foreach ($formules as $name => $cell) { /* On recherche les cases supplémentaires qui manqueraient */ $mls = (string)$this->mainLine; if (str_ends_with($name, $mls)) { $name = substr($name, 0, -strlen($mls)); } $deps = $cell->getDeps(); foreach ($deps as $dep) { $dep = str_replace('$', '', $dep); if (!array_key_exists($dep, $formules)) { $found = false; foreach ($cellsPos as $cp) { if ($cp . $mls === $dep) { $found = true; break; } } if (!$found) { $cellDep = $this->getSheet()->getCell($dep); $formules[$dep] = $cellDep; } } } } foreach ($formules as $name => $cell) { $expr = $cell->getFormuleExpr(); if ($this->exprIsTest($expr)) { Loading @@ -350,6 +403,8 @@ END FORMULE_" . $this->getName() . ";"; $body = str_replace('<--DECALAGE-->', $this->mainLine - 1, $body); $body = str_replace('<--CELLS-->', $cells, $body); $body = str_replace('<--NAME-->', $this->getName(), $body); $body = str_replace('<--INTERVENANT_QUERY-->', $intervenantQuery, $body); $body = str_replace('<--VOLUME_HORAIRE_QUERY-->', $volumeHoraireQuery, $body); foreach ($cellsPos as $param => $cell) { $body = str_replace("<--$param-->", "'" . $cell . "'", $body); } Loading