diff --git a/CHANGES.txt b/CHANGES.txt index 6c37e03..0eb8479 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -85,10 +85,11 @@ Outre ces changements, voici d'autres changements importants : ======= CHANGES ======= ------- -10/09/2020 v3.7.9.97-98 (EP) +10-11/09/2020 v3.7.9.97-99 (EP) - (e) Ajout de l'entité (table) "Projet", à laquelle un matériel peut (ou pas) être associé - (b) Enorme bugfix sur le numéro d'inventaire qui se régénérait à chaque modif du matériel !!! - (i) Changement de quelques règles d'accès (ACL) par défaut + - ... ------- 07/09/2020 v3.7.9.96 (EP) diff --git a/README.md b/README.md index f0ea465..be97f2f 100644 --- a/README.md +++ b/README.md @@ -42,8 +42,8 @@ Logiciel testé et validé sur les configurations suivantes : -------------------------------------------------------------------------------------------- -Date: 10/09/2020 -Version: 3.7.9.98 +Date: 11/09/2020 +Version: 3.7.9.99 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) diff --git a/src/Model/Table/AppTable.php b/src/Model/Table/AppTable.php index 80b1821..248c54c 100644 --- a/src/Model/Table/AppTable.php +++ b/src/Model/Table/AppTable.php @@ -2,6 +2,7 @@ namespace App\Model\Table; use Cake\ORM\Table; +use Cake\ORM\TableRegistry; /** * App Model @@ -29,4 +30,15 @@ class AppTable extends Table { return (bool) filter_var($check, FILTER_VALIDATE_EMAIL); } + + /* + public function getEntity($id) { + debug($this->get($id)); + debug($this->getEntityClass()); // 'App\Model\Entity\Materiel' + debug($this->getTable()); // table name + //_getClassName() + //return TableRegistry::getTableLocator()->get('Materiels')->get($id); + } + */ + } diff --git a/src/Model/Table/MaterielsTable.php b/src/Model/Table/MaterielsTable.php index 7e01798..c5f4e3b 100755 --- a/src/Model/Table/MaterielsTable.php +++ b/src/Model/Table/MaterielsTable.php @@ -647,6 +647,26 @@ class MaterielsTable extends AppTable return $rules; } + /* + private function getEntity($id) { + return TableRegistry::getTableLocator()->get('Materiels')->get($id); + } + */ + + private function buy_year_changed($entity) { + // ADD => on return true car le num inventaire n'a pas encore été généré + if (is_null($entity->id)) return true; + // EDIT : + //debug($this->getEntity($entity->id));exit; + //$old_date_year = $this->getEntity($entity->id)->date_acquisition->format('Y'); + //$old_date_year = TableRegistry::getTableLocator()->get('Materiels')->get($entity->id); + $old_date_year = $this->get($entity->id)->date_acquisition->format('Y'); + $new_date_year = $entity->date_acquisition->format('Y'); + //debug($old_date_year); debug($new_date_year); exit; + return $new_date_year != $old_date_year; + // Sinon + return false; + } public function beforeSave($event, $entity, $options) { //debug($entity); exit; @@ -715,8 +735,29 @@ class MaterielsTable extends AppTable //debug($entity->isDirty('date_acquisition')); //debug(in_array($entity->date_acquisition,$entity->getDirty())); //debug($entity); - // La date achat a changé ? => on met à jour le numéro d'inventaire - if ( $entity->isDirty('date_acquisition') ) { + //if ( $entity->isDirty('date_acquisition') ) { + /* + * (EP202009) changement radical de l'algo de (re)-génération du numéro d'inventaire + * + * Si config "SANS année" (simple numéro séquentiel) + * => on ne génère le numéro d'inventaire + * QU'une seule fois pour toutes : à la création de la fiche + * + * Par contre, si config "AVEC année" (numéro séquentiel PAR année) + * => on re-génère le numéro d'inventaire à CHAQUE fois que + * - la date achat est modifiée + * ET + * - que son ANNÉE a changé + */ + if ( + // ADD => on génère car c'est la première fois + empty( $entity->get('numero_laboratoire') ) + || + // EDIT et config "avec" année => on (re)-génère ssi date achat modifiée et année changée + ( $WITH_YEAR && $entity->isDirty('date_acquisition') && $this->buy_year_changed($entity) ) + ) { + $labShortName = $configuration->labNameShort; + $numero_laboratoire = $labShortName; if ($WITH_YEAR) { $year=substr($entity->get('date_acquisition'), 6, 4); ////debug("year before : $year"); @@ -724,11 +765,8 @@ class MaterielsTable extends AppTable $year = '20' . $year; } ////debug("year after: $year"); + $numero_laboratoire .= '-' . $year; } - $labShortName = $configuration->labNameShort; - $numero_laboratoire = $labShortName; - //$WITH_YEAR && $numero_laboratoire .= '-' . $year; - if ($WITH_YEAR) $numero_laboratoire .= '-' . $year; //$num = TableRegistry::get('Materiels')->find('all', [ $num = TableRegistry::getTableLocator()->get('Materiels')->find('all', [ 'fields' => [ -- libgit2 0.21.2