Anomalie #19591
ferméErreur SQL dans le parapheur en mode Griffe après erreur en signature
Description
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é.
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 :
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 :
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.
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.
Fichiers