Bug sur le calcul en temps partiel avec heures et certaines valeurs précises
Opened this issue · 5 comments
Pour certains paramètres, les calcul renvoyés sont null
Spécifiquement : temps partiel, mi-temps (17.5h/semaine). Ex :
- si coût total employeur = 3000 -> NoK
- si coût total = 3500 -> Ok
Reproductible sur le site https://www.urssaf.fr/accueil/outils-documentation/simulateurs/cotisations-employeur.html mais aussi via appel direct à l'API
![image](https://private-user-images.githubusercontent.com/16556203/338197639-91f6c48c-3890-4cd9-b093-bb6952486053.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU3NzU1ODUsIm5iZiI6MTcyNTc3NTI4NSwicGF0aCI6Ii8xNjU1NjIwMy8zMzgxOTc2MzktOTFmNmM0OGMtMzg5MC00Y2Q5LWIwOTMtYmI2OTUyNDg2MDUzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA4VDA2MDEyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTkzYjM3YzI1ZWNmODJmZGU5ZTQzYWFiNzQ5YzRkZTU2NWM5MGY0OWVmMGMxYjE3MTBhZmNkNmViODY0NzJkMTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.4Mc50498R5PDbKTWC256AvA8-9gftE618cXMkgItYCk)
![image](https://private-user-images.githubusercontent.com/16556203/338197771-dc13e8dc-6043-40f0-94c8-c4a8de06117e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU3NzU1ODUsIm5iZiI6MTcyNTc3NTI4NSwicGF0aCI6Ii8xNjU1NjIwMy8zMzgxOTc3NzEtZGMxM2U4ZGMtNjA0My00MGYwLTk0YzgtYzRhOGRlMDYxMTdlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA4VDA2MDEyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTllOGQ1MzgyODQ4NzQ5NDhlYmM4YjRkY2IzNjA4M2ZmMjYyNmVkMzkxNzUxY2UxYmExNGM4N2I4OTE1NDA1OGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.MTBJ5MUY8YP1TtgQb8M7ZwkqSlt7B7qxpcvmoHPxvbI)
![image](https://private-user-images.githubusercontent.com/16556203/338198077-67e72f94-33c6-430f-b6ae-9d7c95ff7d21.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU3NzU1ODUsIm5iZiI6MTcyNTc3NTI4NSwicGF0aCI6Ii8xNjU1NjIwMy8zMzgxOTgwNzctNjdlNzJmOTQtMzNjNi00MzBmLWI2YWUtOWQ3Yzk1ZmY3ZDIxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA4VDA2MDEyNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM1NGNmNjQ4OTg0M2U5N2ZjZjJiMDE0YTY3NzhmNWQ3OTQ5YjYyZjExMTM3ODBkMDE1OGYxM2YzNDQ5NWE1NTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.v3bna6tqa2QXoxpxYapu9IVYLk7ezdz7GJuAeR1kQZw)
En effet, si l'on reprend ces conditions cf. lien de partage:
Aucun résultat affiché quand le coût total employeur est compris entre 2978€ et 3106€ inclus.
Selon ce paramètre, on voit sur la page de documentation de "Coût total employeur" que la valeur renseignée dans la simulation n'est pas intégrée dans les calculs (cf. capture d'écran).
Je crois avoir identifié la cause du problème qui est en fait bien plus général.
coût total employeur = salaire brut + cotisations
Dans les cotisations, il y a notamment la cotisation "Maladie" (maladie, maternité, invalidité, décès) dont le taux dépend du salaire brut.
Si le salaire brut est inférieur à un certain plafond, c'est un taux réduit de 7% qui est appliqué, sinon c'est un taux de 13%.
Cas spécifique présenté dans l'issue :
Pour un temps partiel à mi-temps, ce plafond vaut 2184€
Donc pour un salaire brut de 2183 €, c'est le taux réduit de 7% qui s'applique et le coût total employeur est de 2975 € :
Pour un salaire brut de 2184 €, on passe au taux classique de 13% et le coût total employeur saute donc à 3107 €
Dans ce cas d'un mi-temps, il n'y a donc pas de salaire brut qui corresponde à un coût total employeur entre ces 2 valeurs (du moins avec les paramètres par défaut du simulateur).
Cas général :
Le problème est donc plus général car on observe ce "saut" dans le coût total employeur pour toutes les durées de travail.
Par exemple pour un temps plein, le plafond du taux réduit est de 4368 € et on a donc :
- Salaire brut 4367 € => coût total employeur 5931 €
- Salaire brut 4368 € => coût total employeur 6194 €
On retrouve le "bug" lorsqu'on renseigne un coût total employeur compris entre 5935 et 6193 € inclus.
Conclusion :
- A priori, pas de problème au niveau des règles de calcul
- Il faut trouver une solution pour l'expérience utilisateur
Suggestion :
Lorsque l'utilisateur se retrouve dans cette situation, afficher un avertissement entre les lignes "coût total employeur" et "salaire brut" du type :
Avec vos réponses actuelles, il n'y a pas de salaire brut correspondant à ce coût total employeur.
Voire quelque chose de plus détaillé et/ou sourcé qui précise
du fait des règles de calcul des cotisations employeur
ou quelque chose comme ça.
Bravo @liliced pour avoir trouvé l'explication à ce qui semblait être un "bug" mystérieux!
Il n'y a donc pas d'erreur de calcul et la proposition la plus sage serait effectivement d'afficher un avertissement quand le montant rentré pour le "coût total employeur" est dans cette fourchette de coûts totaux n'existant pas dans la réalité.
Une alternative bien plus complexe serait que le montant du "coût total employeur", après être rentré par l'usager, s'abaisse automatiquement juste en-dessous de la fourchette des coûts totaux n'existant pas dans la réalité. Par exemple, dans l'exemple du cas général, si l'usager rentre 6000€ dans le "coût total employeur", ce montant s'abaisserait automatiquement à 5931€. Mais c'est une solution assez "lourde" à mettre en place, pour des cas de figure très réduits.
Bien pensé de ta part @glopezrios !
Par contre je ne suis pas sûre qu'il soit recommandé de modifier l'entrée utilisateur sans explication. Ce peut être très frustrant comme expérience.