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.