[STUDIO] Champ "date de mise à jour"

Bonjour,

Nous avons amélioré notre module Compte pour y ajouter un onglet décomposé en panneau.

Chaque panneau porte sur une thématique particulière et est composé de plusieurs champs.

Notre besoin:

Si un utilisateur modifie un champ du panneau "Thématique xx", nous aimerions que la date du jour alimente en automatique le champ calculé "Date de mise à jour de la Thématique xx"

Je ne trouve pas la bonne formule.

Est-ce possible?

Merci pour votre aide.

Delphine.

  • Bonjour Delphine, Je crains que cela ne soit pas possible avec une formule dans Studio, cependant, je crois que vous pouvez le mettre en œuvre avec une action de dépendance. Vous devrez créer un champ de dépendance par panneau, en ajoutant tous les champs de chaque panneau à la liste "Trigger Fields". Ensuite, utilisez la formule today() dans la SetValue.

    support.sugarcrm.com/.../

    support.sugarcrm.com/.../

  • Bonjour Delphine,

    Ici il semblerait que votre architecture n'est pas optimale. Pourquoi n'avez-vous pas créé un module thématique? Ainsi vous pourriez alléger la vue de votre module compte et dès qu'une thématique est mise à jour vous avez la date de modification qui est mise à jour. Ce qui est le comportement par défaut d'un enregistrement. De plus, vous pouvez ajouter autant de thématique que vous le souhaitez. C'est complètement scalable. 

    Si vous ne changez pas de design, je vous conseille d'aller voir du côté des Process Definitions ;) 

    Bonne journée, 

  • Si j'ai bien compris la situation, vous avez, par example:

    panneau ThématiqueA, avec  champ_1, champ_2, champ_3, date_mise_a_jour_A

    et panneau ThématiqueB, avec  champ_4, champ_5, champ_6, date_mise_a_jour_B

    Si je modifie champ_1, 2 ou 3 vous voulez mettre à jour l'horodatage date_mise_a_jour_A 

    Si je modified champ_4, 5 ou 6 vous voulez mettre à jour l'horodatage date_mise_a_jour_B

    Je ne sais pas comment vous pouvez identifier les champs dans chaque panneau par programme, mais si le champs ne changent pas trop souvent vous pouvez utilizer un logic_hook avec des listes codées en dur. 

    Dans le before_save logic_hook, vous pouvez récoupérer une list des champs qui ont changé, voir si l'un des champs de chacun des panneaux a changé et mettre à jour l'horodatage de la Thématique correspondant, comme ça:

          $changes = $bean->db->getDataChanges($bean);
          $changed_fields = array_keys($changes);
          
          $panelA = array ("champ_1", "champ_2", "champ_3);
          $panelB = array ("champ_4", "champ_5", "champ_6);
          
          if(count(array_intersect($changed_fields, $panelA)) > 0){
            // au moins un des champs panelA a été modifié
            //fixe l'horodatage pour le panelA
          }
          if(count(array_intersect($changed_fields, $panelB)) > 0){
            // au moins un des champs panelB a été modifié
            //fixe l'horodatage pour le panelB
          }


    Pardonnez, et s'il vous plait corrigez, mon français. Slight smile

    FrancescaS

  • Bonjour Delphine,

    Avant d'arriver à des extrêmes du type créer un module, vous avez différentes solutions plus abordables :

    - Solution 1 : Mettre en place un workflow qui se déclenche à la mise à jour du module et qui va alimenter les champs "date" en fonction des modifications réalisées.

    -Solution 2 : Mettre en place une formule de calcule qui vous permettrade stocker la date de la première mise à jour. La formule sera du type si le champ est vide, alors je regarde si le champ thématique est renseigné. Dans ce cas, je met la date du jour. Dans le cas contraire je ne met pas de date. Je crois de mémoire que pour ne pas mettre de date, il faut utiliser une astuce du type date("") ou date(null) mais il faut tester.

    Nous sommes d'accord que le besoin est de stocker uniquement la date de la première mise à jour ?

    Bonne soirée

  • Bonjour Mathieu,

    Merci pour l'astuce du workflow. ça répond très bien à notre besoin immédiat.

    Bonne fin de journée.

    Delphine.

    PS: la date sera modifiée à chaque mise à jour, pas juste la 1ère fois ;)

  • Bonjour Francesca,

    Votre français est parfait ;)

    Merci votre réponse, je la garde précieusement.

    Delphine.

  • Bonjour Maxime,

    Nous avions pensé créer un nouveau module si les données concernées étaient plus nombreuses, ce qui n'est pas le cas. On y viendra peut être un jour, mais pas tout de suite ;)

    Pour le plan B, je regarde prochainement ;)

    Merci pour votre réponse.

    Delphine.

  • Bonjour Andre,

    Effectivement, j'ai voulu trop simple avec la formule :D

    Je n'ai pas l'habitude des triggers, il faut que je m'y mette!

    Bonne fin de journée.

    Delphine.