Polices et renouvellements
Le volet financier des mêmes événements est dans Paiements.
Fonctionnement
Section intitulée « Fonctionnement »Le déroulé de l’émission, avec les emails, est dans le flux Émission de la police.
Émission. En libre-service, la tâche de traitement crée la police, la période 1 (affaire nouvelle) et le contrat (modèle Word converti en PDF). Elle le signe pour Inqase (« pré-signé ») et annonce l’émission de la police, qui envoie le seul email d’achat (contrat en pièce jointe). La tâche exige un email de contact (sinon elle journalise un avertissement et n’émet rien) et Slack est alerté si elle échoue après 3 essais. Dans le parcours admin, la plupart des actions ne sont possibles que dans certains statuts de la demande ; la signature se fait par DocuSign, par SMS (aucun fournisseur SMS branché : en production le code n’est pas envoyé) ou par dépôt manuel du contrat signé.
Après l’émission. Un avenant (modification en cours de période) ajoute une période de type avenant, rattachée à la période d’origine, voir Échecs, avenants et remboursements. Le seul cas où une police est annulée est un litige perdu, qui écrit une ligne d’annulation négative au bordereau, voir Commissions et bordereau.
Le déroulé des échéances, avenants et renouvellements, avec les emails et les tâches non planifiées, est dans le flux Après l’émission.
Renouvellement. La tacite reconduction (le contrat se prolonge d’un an) ajoute une période de renouvellement à la même police, jamais un clone. La tâche de demande de déclaration envoie par email un lien de connexion signé, valable jusqu’à la fin du terme, aux polices qui se terminent dans les 30 jours (délai réglable) ; le client ou le courtier déclare le chiffre d’affaires, un admin valide (et peut corriger, avec trace). La tâche de renouvellement fait ensuite démarrer le terme suivant à la fin de la période active, pour un an, avec une prime recalculée sur le chiffre d’affaires déclaré. Pourquoi : cloner la police dupliquait les données et cassait l’historique d’une police belge reconduite tacitement.
Règles et pièges
Section intitulée « Règles et pièges »- Numérotation. « P », le code de l’assureur, un tiret, l’année et le mois sur 4 chiffres, puis un compteur sur 3 chiffres (exemple : P01-2605001). Le compteur prend le plus haut numéro du mois, lignes supprimées comprises, plus 1 ; un conflit de numéro est réessayé, 3 tentatives au plus.
- Conditions figées. La police fige primes, taxe, franchise, garanties, taux de commission, fichiers de conditions et déclarations de risque ; régénérer le contrat conserve les chiffres d’origine. Un contrat signé n’est jamais remplacé. Voir Conditions figées sur la police.
- Un même message n’a d’effet qu’une fois. L’émission ne fait rien si la demande est déjà « police émise » ; il n’existe qu’une tâche à la fois par paiement, et elle s’arrête si la date de signature est déjà renseignée. Un paiement sur une offre rejetée ne crée aucune police.
- Notification DocuSign. La réception vérifie la signature du message (empreinte calculée avec un secret partagé avec DocuSign) et répond 401 à une requête non signée ou si le secret est absent, dans tous les environnements. Seuls l’identifiant de l’enveloppe et le statut sont journalisés. Un message « signé » rejoué ne fait rien. Pourquoi : hors production, un secret absent a laissé passer des requêtes non vérifiées et le contenu du message (données personnelles) était journalisé.
- Liens de connexion. Le client n’a pas de mot de passe. Un lien signé est envoyé par email (valable 30 minutes, 24 heures pour un lien de bienvenue), sans révéler si l’adresse existe ; il est à usage unique, y compris les liens de renouvellement, de préavis et de mandat qui passent par le même circuit. La demande de connexion est limitée à 5 par minute et l’ouverture d’un lien à 10 par minute. L’accès client exige un abonnement Stripe actif, en essai, en retard de paiement ou impayé.
- Périodes. La période active est la période confirmée portant le numéro le plus élevé ; les informations de la police la reflètent, et la date de début garde l’origine du contrat. Un renouvellement ne bloque jamais : sans déclaration validée, la valeur précédente est reportée (marquée « en retard » et « à régulariser »), régularisée plus tard par un avenant admin, et Slack est alerté.
- Le renouvellement saute les polices qui ne sont pas actives ; chaque renouvellement est une opération isolée (tout passe ou rien) ; si un terme suivant existe déjà, le renouvellement échoue ; la ligne de renouvellement du bordereau est écrite dans la même opération.
Ce qui reste manuel
Section intitulée « Ce qui reste manuel »- Les tâches de demande de déclaration et de renouvellement ne sont pas planifiées (un commentaire dans le fichier de planification le dit).
- Le prix de l’abonnement Stripe n’est pas mis à jour après un renouvellement : l’ancien montant continue d’être facturé.
- Les déclarations tardives se régularisent à la main par un avenant.
Où dans le code
Section intitulée « Où dans le code »app/Services/PolicyService.php,PolicyDocumentService.php,DocuSignService.phpapp/Services/RenewalService.php,RenewalDeclarationService.php,MagicLinkService.phpapp/Http/Controllers/Api/Webhooks/DocuSignWebhookController.php
Correspondance technique
Section intitulée « Correspondance technique »| Terme de la page | Identifiant technique |
|---|---|
| Annonce de paiement réussi | PaymentSucceeded |
| Tâche de traitement après paiement | ProcessPolicyAfterPayment (ShouldBeUnique) |
| Annonce de police émise, signée, avenant émis, renouvelée | PolicyIssued, PolicySigned, PolicyEndorsed, PolicyRenewed |
| Police, période | Policy, PolicyPeriod |
| Période : affaire nouvelle, avenant, renouvellement | NewBusiness, Endorsement, Renewal |
| Période d’origine d’un avenant | source_period_id |
| Numéro de période | period_number |
| Contrat pré-signé, date de signature | pre_signed, policy_signed_at |
| Parcours admin | Admin\Pipeline\ActionController |
| Signature par DocuSign, SMS, dépôt manuel | docusign, sms, manual |
| Tâche de demande de déclaration | renewals:request-declarations |
| Tâche de renouvellement | renewals:process-due, RenewalService::renew |
| Délai de la demande de déclaration | pricing.policy_dates.renewal_declaration_lead_days |
| Code de l’assureur | pricing.insurer_code |
| Notification DocuSign | POST /api/v1/webhooks/docusign |
| Annulation d’une police | Policy::cancel |
| Rattrapage des commissions | broker:backfill-commissions |
| Envoi du lien de connexion | MagicLinkService::send |
| Demande de connexion, ouverture d’un lien | POST /portal/login, GET /portal/auth/{user} |
| Valeurs reportées d’une déclaration tardive | late, to_regularise |
Questions ouvertes
Section intitulée « Questions ouvertes »- Une signature DocuSign passe la demande à « police émise » mais annonce la signature, pas l’émission : pas d’email d’émission, pas de notification courtier et pas de commission de première échéance du courtier via les traitements automatiques (rattrapage : la commande de rattrapage des commissions).
- À partir de la 1001e police d’un mois, le numéro entre en conflit : la recherche du compteur s’arrête à 999, donc elle renvoie de nouveau 999 une fois la 1000e créée (déduit de la lecture, non testé).
- Quand les deux tâches de renouvellement seront planifiées, et comment le prix Stripe sera mis à jour (en attente de la validation Hiscox).
- Quel compte DocuSign la production utilise (l’adresse d’interface par défaut est celle de la démo).