feat: contrat migration SARL SITECONSEIL - PDF, DocuSeal, webhook, page publique

PDF ContratMigrationSiteconseilPdf:
- Preambule: cessation SARL SITECONSEIL, continuite par E-Cosplay
- Avertissement orange: pas de reprise d'anciennete ni accords anterieurs
- 8 articles: objet, transfert, tarifs, duree, anciennete, responsabilite,
  RGPD, droit applicable
- 2 signatures DocuSeal (Company auto-signe + Client signe)

Controller admin:
- create: genere le PDF automatiquement a la creation
- generate-pdf: regeneration PDF
- send-signature: envoi DocuSeal 2 parties + email client avec lien
- Boutons: Regenerer PDF, Voir PDF, Envoyer/Renvoyer signature, Annuler

Page publique /move/from/siteconseil:
- Explication complete de la migration (pourquoi, ce qui change,
  ce qui ne change pas, etapes, FAQ)
- Accessible sans authentification
- Liee dans l'email de signature

Webhook DocuSeal (doc_type=contrat):
- Telecharge PDF signe + audit (unlink apres flush)
- State SIGNED + signedAt
- Email client + admin avec PDFs en piece jointe

Templates email:
- contrat_signature: lien page migration + lien signer + avertissement
- contrat_signed: confirmation + PDFs attaches

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-04-09 08:18:09 +02:00
parent 9b8e49c550
commit 42d508a53b
9 changed files with 905 additions and 3 deletions

View File

@@ -0,0 +1,34 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20260409061033 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE contrat (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, email VARCHAR(255) NOT NULL, raison_sociale VARCHAR(255) NOT NULL, type VARCHAR(50) NOT NULL, state VARCHAR(20) DEFAULT \'draft\' NOT NULL, submission_id VARCHAR(255) DEFAULT NULL, submitter_company_id INT DEFAULT NULL, submitter_customer_id INT DEFAULT NULL, pdf_unsigned VARCHAR(255) DEFAULT NULL, pdf_signed VARCHAR(255) DEFAULT NULL, pdf_audit VARCHAR(255) DEFAULT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, signed_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, customer_id INT DEFAULT NULL, PRIMARY KEY (id))');
$this->addSql('CREATE INDEX IDX_603499939395C3F3 ON contrat (customer_id)');
$this->addSql('ALTER TABLE contrat ADD CONSTRAINT FK_603499939395C3F3 FOREIGN KEY (customer_id) REFERENCES customer (id) ON DELETE SET NULL NOT DEFERRABLE');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE contrat DROP CONSTRAINT FK_603499939395C3F3');
$this->addSql('DROP TABLE contrat');
}
}