Projet

Général

Profil

Anomalie #19591

Mis à jour par Etienne FAMERY il y a presque 3 ans

Lorsque l'on souhaite signer un document dans le parapheur interne de MaarchCourrier, si une précédente tentative de signature a échouée, alors une erreur SQL survient, empêchant la création du document signé. (voir image ![](3.png) ) 

 # Analyse : 

 Dans MergeController.php ,on récupère la version du courrier : 
 Ligne 639 : 

 ~~~ 
 $document = ResModel::getById(['select' => ['docserver_id', 'path', 'filename', 'category_id', 'version', 'fingerprint', 'format', 'version'], 'resId' => $args['resId']]); 
 ~~~ 


 Et on crée une nouvelle version du document de type TMP : 
 Ligne 755 : 

 ~~~ php 
             AdrModel::createDocumentAdr([ 
                 'resId'         => $args['resId'], 
                 'type'          => 'TMP', 
                 'docserverId' => $storeResult['docserver_id'], 
                 'path'          => $storeResult['destination_dir'], 
                 'filename'      => $storeResult['file_destination_name'], 
                 'version'       => $document['version'] + 1,      => ici on prend la valeur version du document pour créer le document TMP. 
                 'fingerprint' => $storeResult['fingerPrint'] 
             ]); 
 ~~~ 


 Version du document en base :  

 ~~~ sql 
 gpseo=# select res_id,subject,version,filename from res_letterbox where res_id=1975; 
 -[ RECORD 1 ]-------------------------------------------------------------- 
 res_id     | 1975 
 subject    | XXXXXXXXXXXX 
 version    | 5 
 filename | 0131_1925649984.docx 

 ~~~ 

 Cependant, la version du document indiquée dans res_letterbox semble correspondre uniquement aux versions de type PDF du document et pas aux versions TMP, or dans notre table adr_letterbox, on a une version 6 du document de type TMP. 


 ~~~ sql 
 gpseo=# select * from adr_letterbox where res_id=1975 and version >4; 
 -[ RECORD 1 ]+----------------------------------------------------------------- 
 id             | 7148 
 res_id         | 1975 
 type           | PDF 
 version        | 5 
 docserver_id | CONVERT_MLB 
 path           | 2022/01/0002/ 
 filename       | 0152_2082439115.pdf 
 fingerprint    | 23699e7011a9b7317716a5bd552f7fd9c7578e5d8a935ff017bf5e29dcfcc4b9 
 -[ RECORD 2 ]+----------------------------------------------------------------- 
 id             | 6139 
 res_id         | 1975 
 type           | TMP 
 version        | 5 
 docserver_id | CONVERT_MLB 
 path           | 2022/01/0001/ 
 filename       | 0640_56955514.pdf 
 fingerprint    | 6dc608263e3917870747f243ecad7c18ed56349527a29c1e0221af5daf727550 
 -[ RECORD 3 ]+----------------------------------------------------------------- 
 id             | 7149 
 res_id         | 1975 
 type           | TMP 
 version        | 6 
 docserver_id | CONVERT_MLB 
 path           | 2022/01/0002/ 
 filename       | 0153_2133524773.pdf 
 fingerprint    | 4aa477931ef99c9057c0b4ca5056bbe9c823c0774bf3a63c3fb0efe8ccc115ff 
 ~~~ 


 On essaye donc de créer de nouveau une version 6 de type TMP qui existe déjà car on prend pour référence la valeur version de la table res_letterbox. 


 # Conclusion :  
 Lorsqu'une erreur survient à la signature, le document TMP est conservé mais la variable version du document n'est pas incrémenté. Une erreur survient lorsque l'on souhaite signer de nouveau. 
 Contournement : Suppresion des fichiers tmp dans la table adr_letterbox.

Retour