feat(contrat): Améliore l'affichage des contrats et ajoute suivi des paiements.

Cette commit améliore l'affichage des contrats dans le dashboard,
ajoute le suivi des paiements et corrige des bugs mineurs.
```
This commit is contained in:
Serreau Jovann
2026-01-23 10:17:53 +01:00
parent c351c239c5
commit 160240fe85
11 changed files with 300 additions and 63 deletions

View File

@@ -271,15 +271,17 @@ class Client
return $submiter['uuid']; // numéro de signature;
}
public function autoSignConfirmedPayment(ContratsPayments $contratsPayments) {
public function autoSignConfirmedPayment(ContratsPayments $contratsPayments)
{
$relativeFileUrl = $this->storage->resolveUri($contratsPayments, 'paymentFile');
$fileUrl = $this->baseUrl . $relativeFileUrl;
$fileUrl = $this->baseUrl . $relativeFileUrl;
$submission = $this->docuseal->createSubmissionFromPdf([
'name' => 'Confirmaton de paiement N°' . $contratsPayments->getPaymentId(), // Correction : getNum()
'name' => 'Confirmation de paiement N°' . $contratsPayments->getPaymentId(),
'send_email' => true,
'documents' => [
[
'name' => 'confirmation_paiement_' . $contratsPayments->getId() . '.pdf', // Correction : getNum()
'name' => 'confirmation_paiement_' . $contratsPayments->getId() . '.pdf',
'file' => $fileUrl,
],
],
@@ -289,14 +291,34 @@ class Client
'email' => 'contact@ludikevent.fr',
'completed' => true,
'fields' => [
['name'=>'Sign','default_value'=>$this->logoBase64()]
['name' => 'Sign', 'default_value' => $this->logoBase64()]
]
],
],
]);
$sub = $this->docuseal->getSubmission($submission['id']);
sleep(5);
return $sub['documents'][0]['url'];
// --- SYSTÈME DE VÉRIFICATION DYNAMIQUE ---
$maxAttempts = 10; // On essaie 10 fois maximum
$attempts = 0;
$documentUrl = null;
while ($attempts < $maxAttempts) {
$sub = $this->docuseal->getSubmission($submission['id']);
// Vérification si le document et son URL sont prêts
if (!empty($sub['documents'][0]['url'])) {
$documentUrl = $sub['documents'][0]['url'];
break; // On sort de la boucle dès que c'est prêt
}
$attempts++;
usleep(500000); // Attend 0.5 seconde avant de réessayer (plus rapide que sleep(1))
}
if (!$documentUrl) {
throw new \Exception("Docuseal n'a pas généré le document signé à temps pour le paiement " . $contratsPayments->getId());
}
return $documentUrl;
}
}