[openads-Commits] r22874 - in branches/v6.20.0-develop: . obj tests

1 view
Skip to first unread message

sof...@users.adullact.net

unread,
Apr 8, 2026, 9:04:52 AMApr 8
to openmairi...@googlegroups.com
Author: softime
Date: 2026-04-08 15:04:49 +0200 (Wed, 08 Apr 2026)
New Revision: 22874

Modified:
branches/v6.20.0-develop/
branches/v6.20.0-develop/HISTORY.txt
branches/v6.20.0-develop/obj/
branches/v6.20.0-develop/obj/task.class.php
branches/v6.20.0-develop/tests/
branches/v6.20.0-develop/tests/302_03_task_piece_supprimer.robot
Log:
chore(branch): revert de la r22866 (reintegration 10915)


Index: branches/v6.20.0-develop
===================================================================
--- branches/v6.20.0-develop 2026-04-08 09:10:16 UTC (rev 22873)
+++ branches/v6.20.0-develop 2026-04-08 13:04:49 UTC (rev 22874)

Property changes on: branches/v6.20.0-develop
___________________________________________________________________
Modified: svn:mergeinfo
## -262,7 +262,6 ##
/branches/10908_EVO_TASK_ADD_UIDPLATAU:22703-22724
/branches/10910_EVO_DocumentSpecifique:22736-22858
/branches/10913_BUG_double_fire_get_modules:22818-22845
-/branches/10915_BUG_error_task_no_payload_transfert_paltau_output:22827-22865
/branches/10916_EVO_suivi_tache_titre:22837-22848
/branches/1800_BUG_replication_geo_ssdossier:21901-21931
/branches/3.33.X:4845-4901
Modified: branches/v6.20.0-develop/HISTORY.txt
===================================================================
--- branches/v6.20.0-develop/HISTORY.txt 2026-04-08 09:10:16 UTC (rev 22873)
+++ branches/v6.20.0-develop/HISTORY.txt 2026-04-08 13:04:49 UTC (rev 22874)
@@ -10,8 +10,6 @@
Ticket #10905.
* Évolution - DIA Phase 5c : Ajout du flux ARE
Ticket #10886
-* Correction - Anomalie task sans payload sur les transferts Plat'AU sortant
- Ticket #10915.
* Correction - Application de la mise en exergue sur les champs de recherche
non appliqués sur la recherche simple, comme ça l'était déjà sur la recherche
avancée.

Index: branches/v6.20.0-develop/obj
===================================================================
--- branches/v6.20.0-develop/obj 2026-04-08 09:10:16 UTC (rev 22873)
+++ branches/v6.20.0-develop/obj 2026-04-08 13:04:49 UTC (rev 22874)

Property changes on: branches/v6.20.0-develop/obj
___________________________________________________________________
Modified: svn:mergeinfo
## -238,7 +238,6 ##
/branches/10908_EVO_TASK_ADD_UIDPLATAU/obj:22703-22724
/branches/10910_EVO_DocumentSpecifique/obj:22736-22858
/branches/10913_BUG_double_fire_get_modules/obj:22818-22845
-/branches/10915_BUG_error_task_no_payload_transfert_paltau_output/obj:22827-22865
/branches/10916_EVO_suivi_tache_titre/obj:22837-22848
/branches/1800_BUG_replication_geo_ssdossier/obj:21901-21931
/branches/3.33.X/obj:4845-4901
Modified: branches/v6.20.0-develop/obj/task.class.php
===================================================================
--- branches/v6.20.0-develop/obj/task.class.php 2026-04-08 09:10:16 UTC (rev 22873)
+++ branches/v6.20.0-develop/obj/task.class.php 2026-04-08 13:04:49 UTC (rev 22874)
@@ -617,8 +617,7 @@
// parent::setVal($form, $maj, $validation);
//
if ($this->getVal('stream') == "output"
- && ($this->getVal('type') !== 'suppression_piece'
- || $this->getVal('json_payload') === '{}')
+ && $this->getVal('type') !== 'suppression_piece'
&& ($this->getVal('state') !== self::STATUS_DONE
|| $this->getVal('json_payload') === "{}")) {
//
@@ -1134,18 +1133,6 @@
// Si le type de la tache est suppression alors il faut gerer le state dans la payload figée.
if (in_array($val['type'], array('suppression_piece'))) {
$json_payload = json_decode($this->valF['json_payload']);
- if ($json_payload === null
- || ! isset($json_payload->task)
- || ! isset($json_payload->task->state)
- ) {
- $this->addToLog(
- __METHOD__."(): la payload de la tâche suppression_piece "
- .$val['task']." est vide ou invalide, "
- ."impossible de mettre à jour le state dans la payload",
- DEBUG_MODE
- );
- return false;
- }
// Si le state de la payload est différent du nouveau state de la tache.
if ($json_payload->task->state !== $this->valF['state']) {
$json_payload->task->state = $this->valF['state'];
@@ -1549,7 +1536,7 @@
$add = $this->ajouter($valF);
$this->addToLog(__METHOD__."(): retour de l'ajout de tâche: ".var_export($add, true), VERBOSE_MODE);

- // Création de la payload JSON figée pour les tâches de suppression de pièce.
+ // Création de la payload JSON dans le cas ou nous avons un suppression d'objet
if ($stream === 'output'
&& $add === true
&& isset($valF['type']) === true
@@ -1559,14 +1546,8 @@
"obj" => "task",
"idx" => 0,
));
+ // Vérification de l'éxistence d'une tache de suppression de pièce
$task_exists = $inst_task_empty->task_exists('suppression_piece', $valF['object_id']);
- if ($task_exists === false) {
- $this->addToLog(
- __METHOD__."(): tâche suppression_piece introuvable après insertion (object_id: ".$valF['object_id'].")",
- DEBUG_MODE
- );
- return $this->end_treatment(__METHOD__, false);
- }
$valF['task'] = $task_exists;
$inst_task = $this->f->get_inst__om_dbform(array(
"obj" => "task",
@@ -1573,31 +1554,6 @@
"idx" => $task_exists,
));
$valF['json_payload'] = $inst_task->view_form_json(true);
- // Validation : la payload doit être un JSON structuré avec task.type
- $decoded_payload = json_decode($valF['json_payload'], true);
- if ($valF['json_payload'] === null
- || $decoded_payload === null
- || ! is_array($decoded_payload)
- || ! isset($decoded_payload['task']['type'])
- ) {
- $this->addToLog(
- __METHOD__."(): impossible de générer une payload valide pour "
- ."la tâche suppression_piece ".$task_exists
- ." (object_id: ".$valF['object_id']."), annulation",
- DEBUG_MODE
- );
- $this->f->execute_auto_db_query(
- 'update',
- sprintf('%s%s', DB_PREFIXE, "task"),
- array('state' => self::STATUS_CANCELED),
- sprintf("task = '%s'", $task_exists),
- array(
- 'origin' => __METHOD__,
- 'force_return' => true,
- )
- );
- return $this->end_treatment(__METHOD__, false);
- }
$update = $this->modifier($valF);
if ($update === false) {
$this->addToLog(__METHOD__."(): ".$this->msg, DEBUG_MODE);
@@ -2824,10 +2780,7 @@
// Si l'objet de référence n'existe pas log le numéro de la tâche concerné et
// renvoie une payload contenant le message d'erreur.
// Sinon constitue la payload du json.
- // Cas particulier : pour les tâches suppression_piece dont le
- // document_numerise a été supprimé (par ex. via un GED externe), on
- // construit une payload partielle avec les données encore disponibles.
- if (! $objectRefExist && $val_task['type'] !== 'suppression_piece') {
+ if (! $objectRefExist) {
$this->f->addToLog(
sprintf(
__('Impossible de récupérer la payload car l\'objet de réference n\'existe pas pour la tâche : %s'),
@@ -2914,21 +2867,6 @@
// Récupération des données du document numérisé
$val['document_numerise'] = $this->get_document_numerise_data($this->getVal('object_id'));

- // Si le document n'existe plus (supprimé via un GED externe par
- // exemple), on l'indique dans la payload pour que le
- // consommateur puisse gérer l'exception.
- // On vérifie la présence de la clé 'document_numerise' dans le
- // tableau car get_document_numerise_data() retourne toujours au
- // minimum array('path' => ...) donc empty() serait toujours faux.
- if (! isset($val['document_numerise']['document_numerise'])
- && $this->getVal('type') === 'suppression_piece') {
- $val['document_numerise'] = array(
- 'document_numerise' => $this->getVal('object_id'),
- 'document_numerise_supprime' => true,
- 'message' => __("Le document numerise a ete supprime en dehors d'OpenADS."),
- );
- }
-
// Détermination de l'identifiant du dossier
if (isset($val['document_numerise']['dossier']) === true) {
$tmp_dossier_idx = $val['document_numerise']['dossier'];

Index: branches/v6.20.0-develop/tests
===================================================================
--- branches/v6.20.0-develop/tests 2026-04-08 09:10:16 UTC (rev 22873)
+++ branches/v6.20.0-develop/tests 2026-04-08 13:04:49 UTC (rev 22874)

Property changes on: branches/v6.20.0-develop/tests
___________________________________________________________________
Modified: svn:mergeinfo
## -234,7 +234,6 ##
/branches/10908_EVO_TASK_ADD_UIDPLATAU/tests:22703-22724
/branches/10910_EVO_DocumentSpecifique/tests:22736-22858
/branches/10913_BUG_double_fire_get_modules/tests:22818-22845
-/branches/10915_BUG_error_task_no_payload_transfert_paltau_output/tests:22827-22865
/branches/10916_EVO_suivi_tache_titre/tests:22837-22848
/branches/1800_BUG_replication_geo_ssdossier/tests:21901-21931
/branches/3.33.X/tests:4845-4901
Modified: branches/v6.20.0-develop/tests/302_03_task_piece_supprimer.robot
===================================================================
--- branches/v6.20.0-develop/tests/302_03_task_piece_supprimer.robot 2026-04-08 09:10:16 UTC (rev 22873)
+++ branches/v6.20.0-develop/tests/302_03_task_piece_supprimer.robot 2026-04-08 13:04:49 UTC (rev 22874)
@@ -149,77 +149,7 @@
${id_next_task} = Evaluate ${id_suppression_piece} + 1
Vérifier qu'il n'y a pas de création d'autre tâche non concerné id_next_task=${id_next_task} id_dossier=${di1_da}

- Set Suite Variable ${id_suppression_piece_di1} ${id_suppression_piece}

-
-Vérification du comportement de la task suppression_piece avec document_numerise supprimé en externe
- [Documentation] Simule le cas où un document_numerise a été supprimé en dehors
- ... d'OpenADS (GED externe) et la payload de la tâche suppression_piece est
- ... restée vide. Vérifie que l'API retourne une payload partielle exploitable
- ... contenant l'UID Plat'AU de la pièce et que le formulaire ne crash pas.
-
- Depuis la page d'accueil admin admin
-
- # On simule l'existence d'un lien Plat'AU pour la pièce, comme si le
- # connecteur avait traité l'ajout_piece et enregistré l'UID Plat'AU.
- # En production ce lien persiste même après la suppression du document.
- Execute SQL INSERT INTO openads.lien_id_interne_uid_externe (lien_id_interne_uid_externe, object, object_id, external_uid, dossier, category) SELECT nextval('openads.lien_id_interne_uid_externe_seq'), 'piece', t.object_id, 'FAKE-PLATAU-PIECE-UID-10915', t.dossier, 'platau' FROM openads.task t WHERE t.task = '${id_suppression_piece_di1}'
-
- # On corrompt la payload pour simuler le scénario historique
- Execute SQL UPDATE openads.task SET json_payload = '{}' WHERE task = '${id_suppression_piece_di1}'
-
- # Vérification via l'API REST (action=998) : le connecteur Python doit
- # recevoir une payload structurée avec le type, l'indicateur de suppression
- # et l'UID Plat'AU de la pièce pour pouvoir identifier quoi supprimer
- Go To ${PROJECT_URL}/app/index.php?module=form&obj=task&action=998&idx=${id_suppression_piece_di1}&category=platau&state=new&type=suppression_piece&stream=output
- ${api_response} = Get Text css=#form-container
- Should Contain ${api_response} "type":"suppression_piece"
- Should Contain ${api_response} "document_numerise_supprime":true
- Should Contain ${api_response} "piece":"FAKE-PLATAU-PIECE-UID-10915"
- Should Not Contain ${api_response} Impossible de recuperer la payload
-
- # Vérification via le formulaire (action=3) : pas de crash PHP
- Go To ${PROJECT_URL}/app/index.php?module=form&obj=task&action=3&idx=${id_suppression_piece_di1}
- La page ne doit pas contenir d'erreur
-
- # Nettoyage
- Execute SQL UPDATE openads.task SET state = 'canceled' WHERE task = '${id_suppression_piece_di1}'
- Execute SQL DELETE FROM openads.lien_id_interne_uid_externe WHERE external_uid = 'FAKE-PLATAU-PIECE-UID-10915'
-
-
-Vérification que triggermodifierapres ne crash pas avec payload vide
- [Documentation] Vérifie que triggermodifierapres() gère proprement le cas où
- ... la payload en base est vide lors d'un changement de state.
- ... Le champ json_payload est de type jsonprettyprint (balise pre, pas d'input)
- ... en mode modifier, il n'est donc pas soumis. triggermofidier() récupère
- ... la payload depuis la base ('{}') et triggermodifierapres() doit refuser
- ... la modification sans provoquer de crash PHP.
-
- Depuis la page d'accueil admin admin
-
- # On remet la tâche en état new avec payload vide
- Execute SQL UPDATE openads.task SET json_payload = '{}', state = 'new' WHERE task = '${id_suppression_piece_di1}'
-
- # On tente de modifier le state via le formulaire
- &{task_values_modif} = Create Dictionary
- ... state=terminé
- Modifier la task ${id_suppression_piece_di1} ${task_values_modif}
-
- # Pas de crash PHP (pas d'erreur de base de données, pas d'erreur xdebug).
- # triggermodifierapres() détecte la payload invalide, log l'erreur et
- # retourne false, ce qui fait échouer modifier() proprement.
- La page ne doit pas contenir d'erreur
-
- # Vérification que le state n'a PAS changé (modifier() a échoué)
- Go To ${PROJECT_URL}/app/index.php?module=form&obj=task&action=3&idx=${id_suppression_piece_di1}
- La page ne doit pas contenir d'erreur
- ${state_value} = Get Element Attribute css=#state value
- Should Be Equal ${state_value} new
-
- # Nettoyage
- Execute SQL UPDATE openads.task SET state = 'canceled' WHERE task = '${id_suppression_piece_di1}'
-
-
Vérification de la desactivation des tasks de Création pièce lors de la suppression d'une piece de catégorie Plat'AU du dossier d'instruction
[Documentation] Permet de vérifier que la tâche Création pièce est bien annulée lors de la suppression d'une pièce du dossier d'instruction.


Reply all
Reply to author
Forward
0 new messages