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 erreursql.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.