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 | 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 | 89 | - (e) Ajout de l'entité (table) "Projet", à laquelle un matériel peut (ou pas) être associé |
90 | 90 | - (b) Enorme bugfix sur le numéro d'inventaire qui se régénérait à chaque modif du matériel !!! |
91 | 91 | - (i) Changement de quelques règles d'accès (ACL) par défaut |
92 | + - ... | |
92 | 93 | |
93 | 94 | ------- |
94 | 95 | 07/09/2020 v3.7.9.96 (EP) | ... | ... |
README.md
... | ... | @@ -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 | 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 | 2 | namespace App\Model\Table; |
3 | 3 | |
4 | 4 | use Cake\ORM\Table; |
5 | +use Cake\ORM\TableRegistry; | |
5 | 6 | |
6 | 7 | /** |
7 | 8 | * App Model |
... | ... | @@ -29,4 +30,15 @@ class AppTable extends Table |
29 | 30 | { |
30 | 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 | 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 | 670 | public function beforeSave($event, $entity, $options) |
651 | 671 | { |
652 | 672 | //debug($entity); exit; |
... | ... | @@ -715,8 +735,29 @@ class MaterielsTable extends AppTable |
715 | 735 | //debug($entity->isDirty('date_acquisition')); |
716 | 736 | //debug(in_array($entity->date_acquisition,$entity->getDirty())); |
717 | 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 | 761 | if ($WITH_YEAR) { |
721 | 762 | $year=substr($entity->get('date_acquisition'), 6, 4); |
722 | 763 | ////debug("year before : $year"); |
... | ... | @@ -724,11 +765,8 @@ class MaterielsTable extends AppTable |
724 | 765 | $year = '20' . $year; |
725 | 766 | } |
726 | 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 | 770 | //$num = TableRegistry::get('Materiels')->find('all', [ |
733 | 771 | $num = TableRegistry::getTableLocator()->get('Materiels')->find('all', [ |
734 | 772 | 'fields' => [ | ... | ... |