Commit f4d2696b9df4fc13791807e585a843606e56283a
1 parent
f32eba55
Exists in
master
and in
1 other branch
Changement du type de prix_ht dans table materiels
(on passe de float unsigned à decimal(13,2) qui est plus sûr) => adaptation/amélioration de la recherche de matériels sur prix_ht (marche avec ou sans centimes) => adaptation et bugfix tests v4.105.24-3.7.9
Showing
10 changed files
with
150 additions
and
89 deletions
Show diff stats
CHANGES.txt
... | ... | @@ -119,6 +119,15 @@ Outre ces changements, voici d'autres changements importants : |
119 | 119 | |
120 | 120 | ======= CHANGES ======= |
121 | 121 | |
122 | +TODO | |
123 | + - (i) Nettoyage de la liste des fournisseurs : GROSSE requete sql compliquée de suppression des doublons (et des espaces en trop) | |
124 | + | |
125 | +------- | |
126 | +15/10/2020 v4.105.24-3.7.9 (EP) | |
127 | + - (i) changement du type de prix_ht dans table materiels (on passe de float unsigned à decimal(13,2) qui est plus sûr) | |
128 | + - (b) adaptation/amélioration de la recherche de matériels sur prix_ht (marche avec ou sans centimes) | |
129 | + - (b) adaptation et bugfix tests | |
130 | + | |
122 | 131 | ------- |
123 | 132 | 14/10/2020 v4.105.23-3.7.9 (EP) |
124 | 133 | - (i) tests cleanup | ... | ... |
README.md
... | ... | @@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes : |
42 | 42 | |
43 | 43 | -------------------------------------------------------------------------------------------- |
44 | 44 | |
45 | -Date: 14/10/2020 | |
46 | -Version: 4.105.23-3.7.9 | |
45 | +Date: 15/10/2020 | |
46 | +Version: 4.105.24-3.7.9 | |
47 | 47 | |
48 | 48 | |
49 | 49 | HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) | ... | ... |
TESTS.sh
... | ... | @@ -13,14 +13,15 @@ TESTALL=1 |
13 | 13 | #echo "all is: $*" |
14 | 14 | |
15 | 15 | |
16 | +# D'abord on affiche la version courante | |
17 | +./VERSION | |
18 | + | |
16 | 19 | # Souvent necessaire pour que les tests se passent bien: |
17 | -sudo rm -rf tmp/cache/* | |
20 | +###sudo rm -rf tmp/cache/* | |
18 | 21 | #rm -rf tmp/cache/*/* |
19 | 22 | ##sudo chmod o+w tmp/cache/persistent/myapp_cake_core_translations_* > /dev/null 2>&1 |
20 | 23 | |
21 | 24 | |
22 | -# D'abord on affiche la version courante | |
23 | -./VERSION | |
24 | 25 | |
25 | 26 | |
26 | 27 | if [[ "$1" != "" ]] ; then | ... | ... |
VERSION
... | ... | @@ -0,0 +1,15 @@ |
1 | +use database; | |
2 | + | |
3 | +-- Changer le type pour materiels.prix_ht : float unsigned => decimal(13,2) | |
4 | +-- car : | |
5 | +-- float ne marche pas bien dans les comparaisons | |
6 | +-- et | |
7 | +-- unsigned est deprecated pour float, decimal, ... | |
8 | +-- cf https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html | |
9 | +-- cf https://dev.mysql.com/doc/refman/8.0/en/no-matching-rows.html | |
10 | +-- conseillé pour le type monétaire : decimal(13,2) | |
11 | +-- https://rietta.com/blog/best-data-types-for-currencymoney-in/ | |
12 | +-- Champ : materiels.prix_ht | |
13 | +-- Ancien format : float UNSIGNED DEFAULT NULL | |
14 | +-- Nouveau format : decimal(13,2) NULL DEFAULT NULL | |
15 | +ALTER TABLE materiels CHANGE prix_ht prix_ht DECIMAL(13,2) NULL DEFAULT NULL; | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -2739,7 +2739,24 @@ class MaterielsController extends AppController { |
2739 | 2739 | $searchFieldName = 's_' . $fieldName; |
2740 | 2740 | //if ($this->request->getData($searchFieldName) !== null && ($this->request->getData($searchFieldName) != '')) |
2741 | 2741 | //if ($this->request->getData($searchFieldName)) return [ "Materiels.$fieldName =" => $this->request->getData($searchFieldName) ]; |
2742 | - if ($this->request->getData($searchFieldName)) return [ "Materiels.$fieldName LIKE" => $this->request->getData($searchFieldName) ]; | |
2742 | + $val = $this->request->getData($searchFieldName); | |
2743 | + if ($val) { | |
2744 | + // Cas spécial du champ prix_ht : il faut ajouter '.00' à la fin pour que la valeur soit trouvée !!! | |
2745 | + if ($fieldName=='prix_ht') { | |
2746 | + $val = number_format($val, 2, '.', ''); | |
2747 | + /* | |
2748 | + //debug($val); | |
2749 | + if ( | |
2750 | + // pas de point | |
2751 | + count(explode('.', $val)) == 1 | |
2752 | + && | |
2753 | + // ni de virgule | |
2754 | + count(explode(',', $val)) == 1 | |
2755 | + ) $val = $val.'.00'; | |
2756 | + */ | |
2757 | + } | |
2758 | + return [ "Materiels.$fieldName LIKE" => $val ]; | |
2759 | + } | |
2743 | 2760 | return NULL; |
2744 | 2761 | } |
2745 | 2762 | ... | ... |
src/Template/Pages/tools_sm.ctp
... | ... | @@ -72,55 +72,55 @@ echo $this->Html->link($verb . ' les Catégories', [ |
72 | 72 | echo '</td></tr>'; |
73 | 73 | */ |
74 | 74 | |
75 | -echo_list($this->Html, 'Projets', 'projets'); | |
76 | 75 | |
77 | -echo_list($this->Html, 'Sites', 'sites'); | |
76 | +// types de DOCUMENTS | |
77 | +echo_list($this->Html, 'types de Documents', 'type_documents'); | |
78 | 78 | /* |
79 | -echo '<tr><td>'; | |
80 | -echo $this->Html->link('Gérer les Sites', [ | |
81 | - 'controller' => 'sites', | |
82 | - 'sort' => 'nom', | |
83 | - //'action' => 'index', | |
84 | -]); | |
85 | -echo '</td></tr>'; | |
79 | + echo '<tr><td>'; | |
80 | + echo $this->Html->link('Gérer les types de Documents', [ | |
81 | + 'controller' => 'type_documents', | |
82 | + 'sort' => 'nom' | |
83 | + ]); | |
84 | + echo '</td></tr>'; | |
86 | 85 | */ |
87 | 86 | |
88 | -echo_list($this->Html, 'Organismes', 'organismes'); | |
89 | -/* | |
90 | -echo '<tr><td>'; | |
91 | -echo $this->Html->link('Gérer les Organismes', [ | |
92 | - 'controller' => 'organismes', | |
93 | - 'sort' => 'nom' | |
94 | -]); | |
95 | -echo '</td></tr>'; | |
96 | -*/ | |
97 | 87 | |
98 | -echo_list($this->Html, 'types de Suivis', 'type_suivis'); | |
88 | +// FOURNISSEURS | |
89 | +$changed_verb = $verb; | |
90 | +if ($role == 'Administration' && in_array('fournisseurs', $admin_can_manage)) $changed_verb = 'Gérer'; | |
91 | +echo_list($this->Html, 'Fournisseurs', 'fournisseurs', 'index', $changed_verb); | |
99 | 92 | /* |
100 | -echo '<tr><td>'; | |
101 | -echo $this->Html->link('Gérer les types de Suivis', [ | |
102 | - 'controller' => 'type_suivis', | |
103 | - 'sort' => 'nom' | |
104 | -]); | |
105 | -echo '</td></tr>'; | |
106 | -*/ | |
107 | - | |
108 | -$names = explode(" ", $configuration->nom_groupe_thematique); | |
109 | -if (isset($names[1])) { | |
110 | - $nom = $names[0] . 's ' . $names[1] . 's'; | |
111 | -} else { | |
112 | - $nom = $names[0] . 's'; | |
93 | + echo '<tr><td>'; | |
94 | + echo $this->Html->link('Gérer les Fournisseurs', [ | |
95 | + 'controller' => 'fournisseurs', | |
96 | + 'sort' => 'nom' | |
97 | + ]); | |
98 | + echo '</td></tr>'; | |
99 | + */ | |
100 | + | |
101 | + | |
102 | +// GROUPES métier & thématique | |
103 | +foreach (['metier','thematique'] as $group_type) { | |
104 | + //$names = explode(" ", $configuration->nom_groupe_thematique); | |
105 | + $group_type_name = 'nom_groupe_'.$group_type; | |
106 | + $names = explode(" ", $configuration->$group_type_name); | |
107 | + if (isset($names[1])) { | |
108 | + $nom = $names[0] . 's ' . $names[1] . 's'; | |
109 | + } else { | |
110 | + $nom = $names[0] . 's'; | |
111 | + } | |
112 | + //echo_list($this->Html, $nom, 'groupes_thematiques'); | |
113 | + echo_list($this->Html, $nom, 'groupes_'.$group_type.'s'); | |
114 | + /* | |
115 | + echo '<tr><td>'; | |
116 | + echo $this->Html->link('Gérer les ' . $nom, [ | |
117 | + 'controller' => 'groupes_thematiques', | |
118 | + 'sort' => 'nom' | |
119 | + ]); | |
120 | + echo '</td></tr>'; | |
121 | + */ | |
113 | 122 | } |
114 | -echo_list($this->Html, $nom, 'groupes_thematiques'); | |
115 | 123 | /* |
116 | -echo '<tr><td>'; | |
117 | -echo $this->Html->link('Gérer les ' . $nom, [ | |
118 | - 'controller' => 'groupes_thematiques', | |
119 | - 'sort' => 'nom' | |
120 | -]); | |
121 | -echo '</td></tr>'; | |
122 | -*/ | |
123 | - | |
124 | 124 | $names = explode(" ", $configuration->nom_groupe_metier); |
125 | 125 | if (isset($names[1])) { |
126 | 126 | $nom = $names[0] . 's ' . $names[1] . 's'; |
... | ... | @@ -128,60 +128,77 @@ if (isset($names[1])) { |
128 | 128 | $nom = $names[0] . 's'; |
129 | 129 | } |
130 | 130 | echo_list($this->Html, $nom, 'groupes_metiers'); |
131 | + echo '<tr><td>'; | |
132 | + echo $this->Html->link('Gérer les ' . $nom, [ | |
133 | + 'controller' => 'groupes_metiers', | |
134 | + 'sort' => 'nom' | |
135 | + ]); | |
136 | + echo '</td></tr>'; | |
137 | + */ | |
138 | + | |
139 | + | |
140 | +// METROLOGIE MODULE ONLY | |
141 | +if ($configuration->metrologie) { | |
142 | + | |
143 | + echo_list($this->Html, 'Métrologie : Unités', 'unites'); | |
144 | + /* | |
145 | + echo '<tr><td>'; | |
146 | + echo $this->Html->link('Gérer les Unités (Métrologie)', [ | |
147 | + 'controller' => 'unites', | |
148 | + 'sort' => 'nom' | |
149 | + ]); | |
150 | + echo '</td></tr>'; | |
151 | + */ | |
152 | + | |
153 | + echo_list($this->Html, 'Métrologie : Formules', 'formules'); | |
154 | + /* | |
155 | + echo '<tr><td>'; | |
156 | + echo $this->Html->link('Gérer les Formules (Métrologie)', [ | |
157 | + 'controller' => 'formules', | |
158 | + 'sort' => 'nom' | |
159 | + ]); | |
160 | + echo '</td></tr>'; | |
161 | + */ | |
162 | +} | |
163 | + | |
164 | + | |
165 | +// ORGANISMES | |
166 | +echo_list($this->Html, 'Organismes', 'organismes'); | |
131 | 167 | /* |
132 | 168 | echo '<tr><td>'; |
133 | -echo $this->Html->link('Gérer les ' . $nom, [ | |
134 | - 'controller' => 'groupes_metiers', | |
169 | +echo $this->Html->link('Gérer les Organismes', [ | |
170 | + 'controller' => 'organismes', | |
135 | 171 | 'sort' => 'nom' |
136 | 172 | ]); |
137 | 173 | echo '</td></tr>'; |
138 | 174 | */ |
139 | 175 | |
140 | -echo_list($this->Html, 'types de Documents', 'type_documents'); | |
176 | +echo_list($this->Html, 'Projets', 'projets'); | |
177 | + | |
178 | +echo_list($this->Html, 'Sites', 'sites'); | |
141 | 179 | /* |
142 | 180 | echo '<tr><td>'; |
143 | -echo $this->Html->link('Gérer les types de Documents', [ | |
144 | - 'controller' => 'type_documents', | |
145 | - 'sort' => 'nom' | |
181 | +echo $this->Html->link('Gérer les Sites', [ | |
182 | + 'controller' => 'sites', | |
183 | + 'sort' => 'nom', | |
184 | + //'action' => 'index', | |
146 | 185 | ]); |
147 | 186 | echo '</td></tr>'; |
148 | 187 | */ |
149 | 188 | |
150 | -$changed_verb = $verb; | |
151 | -if ($role == 'Administration' && in_array('fournisseurs', $admin_can_manage)) $changed_verb = 'Gérer'; | |
152 | -echo_list($this->Html, 'Fournisseurs', 'fournisseurs', 'index', $changed_verb); | |
189 | + | |
190 | +echo_list($this->Html, 'types de Suivis', 'type_suivis'); | |
153 | 191 | /* |
154 | 192 | echo '<tr><td>'; |
155 | -echo $this->Html->link('Gérer les Fournisseurs', [ | |
156 | - 'controller' => 'fournisseurs', | |
193 | +echo $this->Html->link('Gérer les types de Suivis', [ | |
194 | + 'controller' => 'type_suivis', | |
157 | 195 | 'sort' => 'nom' |
158 | 196 | ]); |
159 | 197 | echo '</td></tr>'; |
160 | 198 | */ |
161 | 199 | |
162 | -// METROLOGIE MODULE ONLY | |
163 | -if ($configuration->metrologie) { | |
164 | 200 | |
165 | - echo_list($this->Html, 'Unités (Métrologie)', 'unites'); | |
166 | - /* | |
167 | - echo '<tr><td>'; | |
168 | - echo $this->Html->link('Gérer les Unités (Métrologie)', [ | |
169 | - 'controller' => 'unites', | |
170 | - 'sort' => 'nom' | |
171 | - ]); | |
172 | - echo '</td></tr>'; | |
173 | - */ | |
174 | 201 | |
175 | - echo_list($this->Html, 'Formules (Métrologie)', 'formules'); | |
176 | - /* | |
177 | - echo '<tr><td>'; | |
178 | - echo $this->Html->link('Gérer les Formules (Métrologie)', [ | |
179 | - 'controller' => 'formules', | |
180 | - 'sort' => 'nom' | |
181 | - ]); | |
182 | - echo '</td></tr>'; | |
183 | - */ | |
184 | -} | |
185 | 202 | |
186 | 203 | ?> |
187 | 204 | </table> | ... | ... |
tests/Fixture/MaterielsFixture.php
... | ... | @@ -696,7 +696,7 @@ class MaterielsFixture extends TestFixture { |
696 | 696 | //'date_acquisition' => '2018-04-19', // 2014-04-19 |
697 | 697 | //'date_acquisition' => yyyy1.'-04-19', // 2014-04-19 |
698 | 698 | 'date_acquisition' => yyyy1mmdd1, |
699 | - 'prix_ht' => 25, | |
699 | + 'prix_ht' => 25.00, | |
700 | 700 | 'eotp' => 'Lorem ipsum dolor sit amet', |
701 | 701 | 'numero_commande' => 'Lorem ipsum dolor sit amet', |
702 | 702 | 'code_comptable' => 'Lorem ipsum dolor sit amet', |
... | ... | @@ -744,7 +744,7 @@ class MaterielsFixture extends TestFixture { |
744 | 744 | //'date_acquisition' => '2019-04-19', // 2015-04-19 |
745 | 745 | //'date_acquisition' => yyyy2.'-'.mmdd1, // 2015-04-19 |
746 | 746 | 'date_acquisition' => yyyy2mmdd1, |
747 | - 'prix_ht' => 50, | |
747 | + 'prix_ht' => 50.00, | |
748 | 748 | 'eotp' => 'Lorem ipsum dolor sit amet', |
749 | 749 | 'numero_commande' => 'Lorem ipsum dolor sit amet', |
750 | 750 | 'code_comptable' => 'Lorem ipsum dolor sit amet', |
... | ... | @@ -789,7 +789,7 @@ class MaterielsFixture extends TestFixture { |
789 | 789 | //'date_acquisition' => '2020-05-11', // 2016-05-11 |
790 | 790 | //'date_acquisition' => yyyy2.'-'.mmdd2, |
791 | 791 | 'date_acquisition' => yyyy2mmdd2, |
792 | - 'prix_ht' => 1100, | |
792 | + 'prix_ht' => 1100.00, | |
793 | 793 | 'eotp' => 'Lorem ipsum dolor sit amet', |
794 | 794 | 'numero_commande' => 'Lorem ipsum dolor sit amet', |
795 | 795 | 'code_comptable' => 'Lorem ipsum dolor sit amet', |
... | ... | @@ -835,7 +835,7 @@ class MaterielsFixture extends TestFixture { |
835 | 835 | //'date_acquisition' => '2020-05-11', // +4 |
836 | 836 | //'date_acquisition' => yyyy2.'-'.mmdd1, |
837 | 837 | 'date_acquisition' => yyyy2mmdd2, |
838 | - 'prix_ht' => 75, | |
838 | + 'prix_ht' => 75.00, | |
839 | 839 | 'eotp' => 'Lorem ipsum dolor sit amet', |
840 | 840 | 'numero_commande' => 'Lorem ipsum dolor sit amet', |
841 | 841 | 'code_comptable' => 'Lorem ipsum dolor sit amet', |
... | ... | @@ -881,7 +881,7 @@ class MaterielsFixture extends TestFixture { |
881 | 881 | //'date_acquisition' => '2020-05-11', // + 4 |
882 | 882 | //'date_acquisition' => yyyy2.'-'.mmdd2, |
883 | 883 | 'date_acquisition' => yyyy2mmdd2, |
884 | - 'prix_ht' => 75, | |
884 | + 'prix_ht' => 75.00, | |
885 | 885 | 'eotp' => 'Lorem ipsum dolor sit amet', |
886 | 886 | 'numero_commande' => 'Lorem ipsum dolor sit amet', |
887 | 887 | 'code_comptable' => 'Lorem ipsum dolor sit amet', |
... | ... | @@ -927,7 +927,7 @@ class MaterielsFixture extends TestFixture { |
927 | 927 | 'status' => 'TOBEARCHIVED', |
928 | 928 | //'date_acquisition' => '2020-05-11', // +4 |
929 | 929 | 'date_acquisition' => yyyy2mmdd2, |
930 | - 'prix_ht' => 75, | |
930 | + 'prix_ht' => 75.00, | |
931 | 931 | 'eotp' => 'Lorem ipsum dolor sit amet', |
932 | 932 | 'numero_commande' => 'Lorem ipsum dolor sit amet', |
933 | 933 | 'code_comptable' => 'Lorem ipsum dolor sit amet', |
... | ... | @@ -973,7 +973,7 @@ class MaterielsFixture extends TestFixture { |
973 | 973 | //'status' => 'TOBEARCHIVED', |
974 | 974 | //'date_acquisition' => '2020-05-10', //+4 |
975 | 975 | 'date_acquisition' => yyyy1mmdd2, |
976 | - 'prix_ht' => 75, | |
976 | + 'prix_ht' => 75.00, | |
977 | 977 | 'eotp' => 'Lorem ipsum dolor sit amet', |
978 | 978 | 'numero_commande' => 'Lorem ipsum dolor sit amet', |
979 | 979 | 'code_comptable' => 'Lorem ipsum dolor sit amet', | ... | ... |
tests/TestCase/Controller/General.php
... | ... | @@ -796,7 +796,7 @@ class General extends TestCase { |
796 | 796 | |
797 | 797 | $this->d("*******************"); |
798 | 798 | //$this->d(" CONTROLEUR $c->name, ACTION $action, ROLE $role_short"); |
799 | - $this->d(" CONTROLEUR $c->getName(), ACTION $action, ROLE $role_short"); | |
799 | + $this->d(" CONTROLEUR {$c->getName()}, ACTION $action, ROLE $role_short"); | |
800 | 800 | $this->d("*******************"); |
801 | 801 | //$this->setUp(); |
802 | 802 | ... | ... |
tests/TestCase/Controller/MaterielsControllerTest.php
... | ... | @@ -1613,7 +1613,7 @@ class MaterielsControllerTest extends General { |
1613 | 1613 | // |
1614 | 1614 | |
1615 | 1615 | // - Test champ prix_ht |
1616 | - $dataSearch['s_prix_ht'] = '50'; | |
1616 | + $dataSearch['s_prix_ht'] = '50.00'; | |
1617 | 1617 | $this->post('/materiels/find', $dataSearch); |
1618 | 1618 | $this->assertResponseContains("Résultats (1)", "Le nb de materiels pour la recherche par prix ht est incorrect (v1)."); |
1619 | 1619 | $dataSearch['s_prix_ht'] = ''; |
... | ... | @@ -1624,7 +1624,7 @@ class MaterielsControllerTest extends General { |
1624 | 1624 | $this->assertResponseContains("Résultats (1)", "Le nb de materiels pour la recherche par prix ht est incorrect (v2)."); |
1625 | 1625 | $dataSearch['s_prix_ht_inf'] = ''; |
1626 | 1626 | $dataSearch['s_prix_ht_sup'] = ''; |
1627 | - $dataSearch['s_prix_ht'] = '75'; | |
1627 | + $dataSearch['s_prix_ht'] = '75.00'; | |
1628 | 1628 | $this->post('/materiels/find', $dataSearch); |
1629 | 1629 | $this->assertResponseContains("Résultats (4)", "Le nb de materiels pour la recherche par prix ht est incorrect (v1)."); |
1630 | 1630 | $dataSearch['s_prix_ht'] = ''; | ... | ... |