Commit 11455340d13aa58601b2ca2b46c862d59424f74c

Authored by Etienne Pallier
1 parent fd6ade95
Exists in master and in 1 other branch dev

Envoi mails lors de commande et livraison (bugfixes et améliorations)

- Lors de la commande => Envoi mail (Commande) au gestionnaire
- Lors de la livraison => Envoi mail au créateur de la fiche matériel
(Acheteur)

=> v5.1.4-3.7.9
CHANGELOG
... ... @@ -347,6 +347,7 @@ Commencer à implémenter le nouveau workflow v5 :
347 347 - Champs obligatoires LOT 0 :
348 348 - ...
349 349 - Champs obligatoires LOT 1 (en commande, demande d'achat faite au SG) :
  350 + - fournisseur !!!
350 351 - ...
351 352 - Champs obligatoires LOT 2 (livré) :
352 353 - ...
... ... @@ -402,7 +403,10 @@ Commencer à implémenter le nouveau workflow v5 :
402 403  
403 404 ======= CHANGES =======
404 405  
405   - - (i) Lors de livraison => Envoi mail au créateur de la fiche matériel et à l'utilisateur du matériel
  406 +-------
  407 +09/09/2021 v5.1.4-3.7.9
  408 + - (i) Lors de la commande => Envoi mail (Commande) au gestionnaire
  409 + - (i) Lors de la livraison => Envoi mail au créateur de la fiche matériel (Acheteur)
406 410  
407 411 -------
408 412 09/09/2021 v5.1.3-3.7.9
... ...
README.md
... ... @@ -53,7 +53,7 @@ Logiciel testé et validé sur les configurations suivantes :
53 53 --------------------------------------------------------------------------------------------
54 54  
55 55 Date: 08/09/2021
56   -Version: v5.1.3-3.7.9
  56 +Version: v5.1.4-3.7.9
57 57  
58 58  
59 59  
... ...
config/app_labinvent_mandatory_fields.default.yml
... ... @@ -98,7 +98,8 @@ MANDATORY_FIELDS_LOT1:
98 98 #TODO: a remettre ? avec "je ne sais pas"
99 99 gestionnaire_id: 'Gestionnaire de référence'
100 100  
101   - #'fournisseur'
  101 + # Fournisseur
  102 + fournisseur_id: 'Fournisseur'
102 103  
103 104 # Utilisé par la Gestion pour remplir le champ eotp
104 105 budgets: 'Budgets'
... ...
src/Controller/AppController.php
... ... @@ -3217,7 +3217,7 @@ class AppController extends Controller
3217 3217 //$this->log("$url fait par $user ($role). $msg", 'debug');
3218 3218 //Log::write('info', "$url fait par $user ($role). $msg");
3219 3219 $msg = "$url fait par $user ($role) - $msg\n";
3220   - $DEBUG && debug($msg);
  3220 + $DEBUG && debug("1 - LOG MESSAGE :\n\n". $msg);
3221 3221 (!$DEBUG) && $this->log($msg, 'info');
3222 3222  
3223 3223 /* Autres formes possibles
... ... @@ -3765,13 +3765,13 @@ class AppController extends Controller
3765 3765  
3766 3766  
3767 3767 /*
3768   - * 4.A - CRÉATION DU MAIL (sujet et body)
  3768 + * 4.1 - CRÉATION DU MAIL (sujet et body)
3769 3769 *
3770 3770 * On détermine le message et le sujet du mail en fonction de l'action effectuee
3771 3771 *
3772 3772 */
3773 3773  
3774   - // (1) Sujet : <Action passive> d'un(e) <entité>
  3774 + // 4.1.1 - Sujet : <Action passive> d'un(e) <entité>
3775 3775  
3776 3776 //$subject = $subject ? $subject : "{$action_attrs['noun']} $article_dun$entity_type";
3777 3777 //$subject = $subject ? $subject : "{$action_attrs['noun']} $article_dun$entity_nice_type_name";
... ... @@ -3781,9 +3781,11 @@ class AppController extends Controller
3781 3781 $subject .= $entity_nice_type_name;
3782 3782 if ($IS_ENTITY_OTHER) $subject .= '(s)';
3783 3783 }
3784   - $DEBUG && debug($subject);
  3784 + //debug($action);
  3785 + if ($action=='statusValidated') $subject .= ' (= matériel LIVRÉ)';
  3786 + //$DEBUG && debug($subject);
3785 3787  
3786   - // (2) Message (body) :
  3788 + // 4.1.2 - Message (body) :
3787 3789  
3788 3790 // - a) TOUS : "User a fait telle action (+url)"
3789 3791 // Par défaut
... ... @@ -3852,37 +3854,42 @@ class AppController extends Controller
3852 3854  
3853 3855 } // Entité Materiel ou associée
3854 3856  
3855   - // - (3a) Commande de matériel : commentaire spécial pour le gestionnaire
3856   - //sdebug($action);
3857   - if ($action=='statusTobeordered') {
3858   - $msg_mail .= "\n\n";
3859   - $msg_mail .= "\n\nMERCI DE BIEN VOULOIR PASSER COMMANDE DE CE MATÉRIEL";
3860   - $msg_mail .= " (un devis a normalement été joint par l'acheteur à la fiche matériel - url ci-dessus).";
3861   - $msg_mail .= "\n\n";
3862   - }
3863   -
3864   - // - (3b) Matos only (sauf delete, dévalidé, TBA et archive) : "Veuillez vérifier la fiche matériel..."
3865   - $actions_no_need_to_be_checked = ['view', 'index', 'delete', 'statusCreated', 'statusTobearchived', 'statusArchived'];
  3857 + // - 4.1.3 - Matos only (sauf delete, dévalidé, TBA et archive) : "Veuillez vérifier la fiche matériel..."
  3858 + $actions_no_need_to_be_checked = ['view', 'index', 'delete', 'statusCreated', 'statusTobeordered', 'statusTobearchived', 'statusArchived'];
3866 3859 if ( $IS_ENTITY_MATERIEL && !in_array($action,$actions_no_need_to_be_checked) )
3867 3860 $msg_mail .= "\n\nVeuillez vérifier et compléter si besoin la fiche correspondante.";
  3861 +
  3862 + // - 4.1.4 - Commande de matériel : commentaire spécial pour le gestionnaire
  3863 + // Mail spécifique pour le Gestionnaire
  3864 + $msg_mail_gestionnaire = $msg_mail; // clone (php7)
  3865 + if ($action=='statusTobeordered') {
  3866 + $msg_mail_gestionnaire .= "\n\n";
  3867 + $msg_mail_gestionnaire .= "\n\nMERCI DE BIEN VOULOIR PASSER COMMANDE DE CE MATÉRIEL";
  3868 + $msg_mail_gestionnaire .= " (un devis a normalement été joint par l'acheteur à la fiche matériel - url ci-dessus).";
  3869 + $msg_mail_gestionnaire .= "\n\n";
  3870 + }
3868 3871  
3869   - // - (4) TOUS : "Vous recevez ce message car... (raison)"
  3872 + // - 4.1.5 - FOOTER (tous) : "Vous recevez ce message car... (raison)"
3870 3873 //if ($entity) {
3871   - $msg_mail .= "\n\nVous recevez ce message car";
3872   - $raison = " vous êtes concerné(e) par cette action effectuée sur l'inventaire des matériels du laboratoire";
3873   - if ($action == 'mailDevis')
3874   - $raison .= "\n\n(vous êtes le gestionnaire de référence du matériel)";
3875   - else
3876   - $raison .= "\n\n(vous êtes l'utilisateur du matériel, ou bien le gestionnaire, ou encore le responsable thématique, métier ou projet)";
3877   - if ($action != 'mailDevis')
3878   - $raison .= "\n\n(ou alors, vous êtes dans la liste mail spécifique gérée via la page de configuration du logiciel LabInvent).";
3879   - $msg_mail .= $raison;
  3874 + $msg_footer = "\n\nVous recevez ce message car";
  3875 + $raison = " vous êtes concerné(e) par cette action effectuée sur l'inventaire des matériels du laboratoire";
  3876 + if ($action == 'mailDevis')
  3877 + $raison .= "\n\n(vous êtes le gestionnaire de référence du matériel)";
  3878 + else
  3879 + $raison .= "\n\n(vous êtes l'utilisateur du matériel, ou bien le gestionnaire, ou encore le responsable thématique, métier ou projet)";
  3880 + if ($action != 'mailDevis')
  3881 + $raison .= "\n\n(ou alors, vous êtes dans la liste mail spécifique gérée via la page de configuration du logiciel LabInvent).";
  3882 + $msg_footer .= $raison;
3880 3883 //}
3881   - $DEBUG && debug($msg_mail);
  3884 +
  3885 + $msg_mail .= $msg_footer;
  3886 + $msg_mail_gestionnaire .= $msg_footer;
  3887 +
  3888 + //$DEBUG && debug($msg_mail);
3882 3889  
3883 3890  
3884 3891 /*
3885   - * 4.B - DESTINATAIRES du mail
  3892 + * 4.2 - DESTINATAIRES du mail
3886 3893 *
3887 3894 * On construit la liste des destinataires
3888 3895 *
... ... @@ -3891,14 +3898,17 @@ class AppController extends Controller
3891 3898 $mailList = [];
3892 3899  
3893 3900 /*
3894   - * a) Envoi général (uniquement pour les entités liées à un matériel)
  3901 + * 4.2.1 - Envoi général (uniquement pour les entités liées à un matériel)
3895 3902 *
3896 3903 * Si l'envoi général est activé, on ajoute les mails des personnes concernées :
3897   - * - (1) le proprio (l'utilisateur) du matériel (sauf s'il est l'acteur de l'action)
3898   - * - (2) le gestionnaire de référence du matos
3899   - * - (3) les responsables métier (mais pas thématique)
  3904 + * - (1) C - le Créateur de la fiche matériel (l'Acheteur ou le "Proprio" du matériel)
  3905 + * - (2) G(R) - le Gestionnaire de Référence du matos
  3906 + * - (3) R - les Responsables métier (mais pas thématique)
3900 3907 * - (TODO:) les responsables projet (scientifique et chef projet)
3901 3908 * - (TODO:) les responsables de pôle (PIME par exemple pour l'IRAP)
  3909 + *
  3910 + * Bien sûr on n'envoie pas de mail à l'ACTEUR de l'action (quelqu'il soit) car il est déjà au courant...
  3911 + *
3902 3912 */
3903 3913  
3904 3914 // ssi Envoi général activé
... ... @@ -3906,12 +3916,12 @@ class AppController extends Controller
3906 3916  
3907 3917 if (!$IS_ENTITY_OTHER) {
3908 3918  
3909   - // - (1) Ajout de l'utilisateur du matériel
  3919 + // - (1) C - Ajout du Créateur de la fiche (l'Acheteur, le "Propriétaire" du matériel)
3910 3920 //if ($this->userName != $materiel->nom_responsable) $mailList[0] = $materiel->email_responsable;
3911 3921 //if ($this->userName == $materiel->nom_responsable)
3912 3922 $mailList[] = $materiel->email_responsable;
3913 3923  
3914   - // - (2) Ajout du Gestionnaire de référence du matos (s'il y en a un)
  3924 + // - (2) G(R) - Ajout du Gestionnaire de Référence du matos (s'il y en a un)
3915 3925 if ($materiel->gestionnaire_id) {
3916 3926 $gestionnaire_ref_email = TableRegistry::getTableLocator()->get('Users')->get($materiel->gestionnaire_id)->email;
3917 3927 $mailList[] = $gestionnaire_ref_email;
... ... @@ -3928,7 +3938,7 @@ class AppController extends Controller
3928 3938 //->toArray();
3929 3939 */
3930 3940  
3931   - // - (3) Ajout des Responsables de groupe métier (ou thématique)
  3941 + // - (3) R - Ajout des Responsables de groupe métier (ou thématique)
3932 3942 /*
3933 3943 $mailsRespMetier = [];
3934 3944 $mailRespThematique = [];
... ... @@ -3979,7 +3989,7 @@ class AppController extends Controller
3979 3989  
3980 3990  
3981 3991 /*
3982   - * b) Envoi à la liste spécifique
  3992 + * 4.2.2 - Ajout de la liste spécifique dans la liste des destinataires (mailList)
3983 3993 *
3984 3994 * Si l'envoi à la liste spécifique est activé,
3985 3995 * on ajoute simplement TOUS les mails de cette liste,
... ... @@ -4007,7 +4017,7 @@ class AppController extends Controller
4007 4017  
4008 4018  
4009 4019 /*
4010   - * c) NETTOYAGE
  4020 + * 4.2.3 - NETTOYAGE de la mailList
4011 4021 * On nettoie la liste des destinataires en supprimant :
4012 4022 * - (1) les doublons éventuels
4013 4023 * - (2) l'auteur de l'action (puisqu'il est déjà au courant)
... ... @@ -4034,10 +4044,15 @@ class AppController extends Controller
4034 4044 if ($found !== false) unset($mailList[$found]);
4035 4045 // Eventuellement, pour renuméroter (supprime les indices manquants)
4036 4046 sort($mailList);
  4047 +
  4048 + $DEBUG && debug("\n\n\n2 - EMAILS :\n\n");
  4049 + $DEBUG && debug("Liste destinataires :");
  4050 + $DEBUG && debug($mailList);
  4051 +
4037 4052  
4038 4053  
4039 4054 /*
4040   - * 4.C - ENVOI DU MAIL
  4055 + * 4.3 - ENVOI DU MAIL à la liste
4041 4056 *
4042 4057 * Enfin, on envoie le mail à toute la liste des destinataires
4043 4058 */
... ... @@ -4052,7 +4067,13 @@ class AppController extends Controller
4052 4067 //if ($mail == $_SESSION['Auth']['User']['mail'][0])
4053 4068 //continue;
4054 4069 //$message = $msg; // Sisi, cette variable $message est utile, m'enfin vous pouvez toujours essayer de la supprimer ..... Et pensez à regarder le contenu de vos mails !!! Sinon ca fait une tumeur
4055   - $message = $msg_mail;
  4070 + //$message = $msg_mail;
  4071 + $message = ($email_addr == $gestionnaire_ref_email) ? $msg_mail_gestionnaire : $msg_mail;
  4072 + if ($DEBUG) {
  4073 + debug("\n\n- Message to $email_addr :\n\n");
  4074 + debug("Sujet : $subject");
  4075 + debug($message);
  4076 + }
4056 4077  
4057 4078 // Si action 'mailDevis', on ajoute le nom du fichier attaché
4058 4079 if ($action == 'mailDevis') {
... ... @@ -4080,9 +4101,7 @@ class AppController extends Controller
4080 4101 ////} // entity not null
4081 4102  
4082 4103 } //foreach ($mailList as $mail)
4083   - $DEBUG && debug("Liste destinataires :");
4084   - $DEBUG && debug($mailList);
4085   - //$DEBUG && exit;
  4104 + $DEBUG && exit;
4086 4105  
4087 4106 return $mailList;
4088 4107  
... ...
src/Model/Entity/Materiel.php
... ... @@ -162,7 +162,7 @@ class Materiel extends Entity {
162 162 //if ($this->is_created) return 'À VALIDER';
163 163 if ($this->is_created) return 'CRÉÉ - à valider';
164 164 if ($this->is_tobeordered) return 'EN COMMANDE - à valider';
165   - if ($this->is_validated) return 'VALIDÉ';
  165 + if ($this->is_validated) return 'VALIDÉ - livré';
166 166 if ($this->is_tobearchived) return 'À SORTIR';
167 167 //if ($this->is_archived)
168 168 return 'ARCHIVÉ';
... ...