Commit 14c43aae87549abc8dc0022560ac53df7b5bad63
1 parent
70a25dac
Exists in
master
and in
1 other branch
Optimisation de la génération du numéro d'inventaire
=> le moins souvent possible => Uniquement si la date d'achat change ET avec une année différente v3.7.9.99
Showing
4 changed files
with
60 additions
and
9 deletions
Show diff stats
CHANGES.txt
@@ -85,10 +85,11 @@ Outre ces changements, voici d'autres changements importants : | @@ -85,10 +85,11 @@ Outre ces changements, voici d'autres changements importants : | ||
85 | ======= CHANGES ======= | 85 | ======= CHANGES ======= |
86 | 86 | ||
87 | ------- | 87 | ------- |
88 | -10/09/2020 v3.7.9.97-98 (EP) | 88 | +10-11/09/2020 v3.7.9.97-99 (EP) |
89 | - (e) Ajout de l'entité (table) "Projet", à laquelle un matériel peut (ou pas) être associé | 89 | - (e) Ajout de l'entité (table) "Projet", à laquelle un matériel peut (ou pas) être associé |
90 | - (b) Enorme bugfix sur le numéro d'inventaire qui se régénérait à chaque modif du matériel !!! | 90 | - (b) Enorme bugfix sur le numéro d'inventaire qui se régénérait à chaque modif du matériel !!! |
91 | - (i) Changement de quelques règles d'accès (ACL) par défaut | 91 | - (i) Changement de quelques règles d'accès (ACL) par défaut |
92 | + - ... | ||
92 | 93 | ||
93 | ------- | 94 | ------- |
94 | 07/09/2020 v3.7.9.96 (EP) | 95 | 07/09/2020 v3.7.9.96 (EP) |
README.md
@@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes : | ||
42 | 42 | ||
43 | -------------------------------------------------------------------------------------------- | 43 | -------------------------------------------------------------------------------------------- |
44 | 44 | ||
45 | -Date: 10/09/2020 | ||
46 | -Version: 3.7.9.98 | 45 | +Date: 11/09/2020 |
46 | +Version: 3.7.9.99 | ||
47 | 47 | ||
48 | 48 | ||
49 | HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) | 49 | HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) |
src/Model/Table/AppTable.php
@@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
2 | namespace App\Model\Table; | 2 | namespace App\Model\Table; |
3 | 3 | ||
4 | use Cake\ORM\Table; | 4 | use Cake\ORM\Table; |
5 | +use Cake\ORM\TableRegistry; | ||
5 | 6 | ||
6 | /** | 7 | /** |
7 | * App Model | 8 | * App Model |
@@ -29,4 +30,15 @@ class AppTable extends Table | @@ -29,4 +30,15 @@ class AppTable extends Table | ||
29 | { | 30 | { |
30 | return (bool) filter_var($check, FILTER_VALIDATE_EMAIL); | 31 | return (bool) filter_var($check, FILTER_VALIDATE_EMAIL); |
31 | } | 32 | } |
33 | + | ||
34 | + /* | ||
35 | + public function getEntity($id) { | ||
36 | + debug($this->get($id)); | ||
37 | + debug($this->getEntityClass()); // 'App\Model\Entity\Materiel' | ||
38 | + debug($this->getTable()); // table name | ||
39 | + //_getClassName() | ||
40 | + //return TableRegistry::getTableLocator()->get('Materiels')->get($id); | ||
41 | + } | ||
42 | + */ | ||
43 | + | ||
32 | } | 44 | } |
src/Model/Table/MaterielsTable.php
@@ -647,6 +647,26 @@ class MaterielsTable extends AppTable | @@ -647,6 +647,26 @@ class MaterielsTable extends AppTable | ||
647 | return $rules; | 647 | return $rules; |
648 | } | 648 | } |
649 | 649 | ||
650 | + /* | ||
651 | + private function getEntity($id) { | ||
652 | + return TableRegistry::getTableLocator()->get('Materiels')->get($id); | ||
653 | + } | ||
654 | + */ | ||
655 | + | ||
656 | + private function buy_year_changed($entity) { | ||
657 | + // ADD => on return true car le num inventaire n'a pas encore été généré | ||
658 | + if (is_null($entity->id)) return true; | ||
659 | + // EDIT : | ||
660 | + //debug($this->getEntity($entity->id));exit; | ||
661 | + //$old_date_year = $this->getEntity($entity->id)->date_acquisition->format('Y'); | ||
662 | + //$old_date_year = TableRegistry::getTableLocator()->get('Materiels')->get($entity->id); | ||
663 | + $old_date_year = $this->get($entity->id)->date_acquisition->format('Y'); | ||
664 | + $new_date_year = $entity->date_acquisition->format('Y'); | ||
665 | + //debug($old_date_year); debug($new_date_year); exit; | ||
666 | + return $new_date_year != $old_date_year; | ||
667 | + // Sinon | ||
668 | + return false; | ||
669 | + } | ||
650 | public function beforeSave($event, $entity, $options) | 670 | public function beforeSave($event, $entity, $options) |
651 | { | 671 | { |
652 | //debug($entity); exit; | 672 | //debug($entity); exit; |
@@ -715,8 +735,29 @@ class MaterielsTable extends AppTable | @@ -715,8 +735,29 @@ class MaterielsTable extends AppTable | ||
715 | //debug($entity->isDirty('date_acquisition')); | 735 | //debug($entity->isDirty('date_acquisition')); |
716 | //debug(in_array($entity->date_acquisition,$entity->getDirty())); | 736 | //debug(in_array($entity->date_acquisition,$entity->getDirty())); |
717 | //debug($entity); | 737 | //debug($entity); |
718 | - // La date achat a changé ? => on met à jour le numéro d'inventaire | ||
719 | - if ( $entity->isDirty('date_acquisition') ) { | 738 | + //if ( $entity->isDirty('date_acquisition') ) { |
739 | + /* | ||
740 | + * (EP202009) changement radical de l'algo de (re)-génération du numéro d'inventaire | ||
741 | + * | ||
742 | + * Si config "SANS année" (simple numéro séquentiel) | ||
743 | + * => on ne génère le numéro d'inventaire | ||
744 | + * QU'une seule fois pour toutes : à la création de la fiche | ||
745 | + * | ||
746 | + * Par contre, si config "AVEC année" (numéro séquentiel PAR année) | ||
747 | + * => on re-génère le numéro d'inventaire à CHAQUE fois que | ||
748 | + * - la date achat est modifiée | ||
749 | + * ET | ||
750 | + * - que son ANNÉE a changé | ||
751 | + */ | ||
752 | + if ( | ||
753 | + // ADD => on génère car c'est la première fois | ||
754 | + empty( $entity->get('numero_laboratoire') ) | ||
755 | + || | ||
756 | + // EDIT et config "avec" année => on (re)-génère ssi date achat modifiée et année changée | ||
757 | + ( $WITH_YEAR && $entity->isDirty('date_acquisition') && $this->buy_year_changed($entity) ) | ||
758 | + ) { | ||
759 | + $labShortName = $configuration->labNameShort; | ||
760 | + $numero_laboratoire = $labShortName; | ||
720 | if ($WITH_YEAR) { | 761 | if ($WITH_YEAR) { |
721 | $year=substr($entity->get('date_acquisition'), 6, 4); | 762 | $year=substr($entity->get('date_acquisition'), 6, 4); |
722 | ////debug("year before : $year"); | 763 | ////debug("year before : $year"); |
@@ -724,11 +765,8 @@ class MaterielsTable extends AppTable | @@ -724,11 +765,8 @@ class MaterielsTable extends AppTable | ||
724 | $year = '20' . $year; | 765 | $year = '20' . $year; |
725 | } | 766 | } |
726 | ////debug("year after: $year"); | 767 | ////debug("year after: $year"); |
768 | + $numero_laboratoire .= '-' . $year; | ||
727 | } | 769 | } |
728 | - $labShortName = $configuration->labNameShort; | ||
729 | - $numero_laboratoire = $labShortName; | ||
730 | - //$WITH_YEAR && $numero_laboratoire .= '-' . $year; | ||
731 | - if ($WITH_YEAR) $numero_laboratoire .= '-' . $year; | ||
732 | //$num = TableRegistry::get('Materiels')->find('all', [ | 770 | //$num = TableRegistry::get('Materiels')->find('all', [ |
733 | $num = TableRegistry::getTableLocator()->get('Materiels')->find('all', [ | 771 | $num = TableRegistry::getTableLocator()->get('Materiels')->find('all', [ |
734 | 'fields' => [ | 772 | 'fields' => [ |