-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Contribution sociale solidaire #114
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Merci @benjello !
Au-delà des remarques de cette première revue, il me reste des interrogations sur le calcul.
Si je me fie au deuxième tableau de cette source, je m'attendrais à voir passer ce test :
- name: Célibataire salarié 1000 TND de salaire net, CSS
period: 2018
absolute_error_margin: 0.5
input:
salaire_imposable: 1178.333 * 12
output:
salaire_net_a_payer:
2018-01: 1000
revenu_assimile_salaire: 14140
revenu_assimile_salaire_apres_abattements: 14140 * (1 - .1)
irpp_mensuel_salarie:
2018-01: -167.396
contribution_sociale_solidarite:
2018-01: -13.839
Mais j'obtiens :
Test 'Célibataire salarié 1000 TND de salaire net, CSS':
contribution_sociale_solidarite@2018-01: [-10.604992] differs from -13.83899974822998 with an absolute margin [3.2340078] > 0.5
Je n'exclus pas encore que l'erreur soit dans la source. Calcul à refaire l'esprit plus éveillé. 🙂
openfisca_tunisia/parameters/prelevements_sociaux/contribution_sociale_solidarite.yaml
Show resolved
Hide resolved
openfisca_tunisia/parameters/prelevements_sociaux/contribution_sociale_solidarite.yaml
Show resolved
Hide resolved
openfisca_tunisia/parameters/prelevements_sociaux/contribution_sociale_solidarite.yaml
Show resolved
Hide resolved
+ revenu_assimile_pension | ||
+ revenus_du_capital | ||
+ prestations_sociales | ||
+ impots_directs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
La CSS
est donc ici définie comme un des revenus_du_travail
puisque revenus_du_travail = salaire_imposable + contribution_sociale_solidarite
.
En quoi n'est-elle pas un impôt direct ou une cotisation sociale ? 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@benjello Up. Pourquoi associons-nous la CSS au travail alors que ça semble s'appliquer aux revenus quelle qu'en soit la source ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C'est juste je l'ai mis pour seulement les salariés car si j'ai supposé qu'il était mensualisé pour les salariés. Mais tu as raison il faut également l'intégrer pour les autres revenus. Peut-être dans une autre issue. Sauf si tu penses qu'il faut le faire maintenant.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ce serait un plus même si ce n'est pas bloquant ici.
openfisca_tunisia/variables/prelevements_obligatoires/contribution_sociale_solidarite.py
Outdated
Show resolved
Hide resolved
openfisca_tunisia/variables/prelevements_obligatoires/contribution_sociale_solidarite.py
Show resolved
Hide resolved
@@ -655,9 +654,9 @@ def formula(individu, period, parameters): | |||
|
|||
# Utils | |||
|
|||
def calcule_impot_revenu_brut(salaire_mensuel, deduction_famille_annuelle, period, parameters): | |||
def calcule_base_imposable(salaire_mensuel, deduction_famille_annuelle, period, parameters): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Transformer ce calcul en une ou deux variable(s) ? (exonération, calcul de la base)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Feel free to clean and optimize.
bareme_irpp = parameters(period.start).impot_revenu.bareme.copy() | ||
bareme_css = parameters(period.start).prelevements_sociaux.contribution_sociale_solidarite.salarie | ||
bareme_irpp.add_tax_scale(bareme_css) | ||
return - irpp_mensuel_salarie - 1.0 * non_exonere * bareme_irpp.calc( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Faire remonter la condition de non exonération en début d'équation ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Avons-nous besoin de ce 1.0
? Ceci sachant que le taux du barème est déjà un flottant.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Peut-être que non mais il y a eu je crois un moment ou cela a dû un problème.
Check and fix.
La source fait le calcul avec le barème 2017. Là on est en 2018. |
L'écart avec la source ne me semble pas venir de la date dans la mesure elle parle bien du calcul applicable suite à la loi de finances 2018 aka : impôt selon barème 2017 (inchangé en 2018) + CSS qui n'existe qu'à partir de 2018. |
Right j'étais sur la mauvaise branche ;-) |
Ta source donne aussi un IR différent BTW. |
C'est comme si nous avions 3 TND en vadrouille entre IRPP et CSS 😅 :
|
Y' a une cotisation UGTT à 3DT si je me souviens bien.
Ils l'ommettent peut-être.
Mahdi Ben Jelloul
…On Mon, Sep 9, 2019 at 2:39 PM sandcha ***@***.***> wrote:
C'est comme si nous avions 3 TND en vadrouille entre IRPP et CSS 😅 :
\ site notre calcul actuel delta
IRPP 2017-2018 -164,056 -167.396 3.340
CSS -13,839 -10.604992 3.234
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#114?email_source=notifications&email_token=AAI7C56XHCQBNCT2IZZILV3QIY7ZLA5CNFSM4IMPYJS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6HNF5I#issuecomment-529453813>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAI7C57XB6337F2OWYKPXY3QIY7ZLANCNFSM4IMPYJSQ>
.
|
@sandcha on merge où tu veux refaire le calcul avec les 3DT ? (no rush, just cleaning mood) |
Ok, si on ignore la source et qu'on retrace le calcul,
Jusqu'ici, c'est bien ce que me donne openfisca. Ensuite, si je comprends bien la formule de la CSS = irpp à (26% + 1%) - irpp à 26%. L'erreur est-elle ici ou dans la formule ? |
value_type = float | ||
entity = Individu | ||
label = "Contribution sociale de solidarité" | ||
definition_period = MONTH |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Modifier la périodicité de la CSS à une valeur annuelle ?
Ceci parce que l'article 53 dit :
La contribution sociale de solidarité est payée dans les mêmes délais et selon les mêmes
modalités impartis pour le paiement de l’impôt sur le revenu, de l’impôt sur les sociétés et de la
retenue à la source le cas échéant.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oui mais elle est prélevée à la source donc tous les mois pour les salaires.
Faudrait dégoter une feuille de paie récente.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Pour la recherche de fiche de paie.
Période cohérente avec le fait qu'on l'intègre pour le moment dans les revenus_du_travail
seuls.
Il me reste néanmoins un doute quand à la façon d'exprimer les situations avec/sans prélèvement à la source 🤔.
|
@sandcha : je veux bien que tu ouvres un nouveau ticket pour le plafonnement de l'abattement de 10% avec tout ce que tu auras pu récupérer comme info. Merci ! |
Et dès que j'ai un peu de temps je retravaille la formule |
value_type = float | ||
entity = Individu | ||
label = "Contribution sociale de solidarité" | ||
definition_period = MONTH |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Pour la recherche de fiche de paie.
Période cohérente avec le fait qu'on l'intègre pour le moment dans les revenus_du_travail
seuls.
Il me reste néanmoins un doute quand à la façon d'exprimer les situations avec/sans prélèvement à la source 🤔.
brackets: | ||
- rate: | ||
2018-01-01: | ||
value: 0.01 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Passe à 3% à la Loi de finances 2020, Art. 39 page 4435 (pas de lien legislation.tn, le portail a des soucis).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
J'ai introduit le changement côté salarié. Pourrais-tu vérifier qu'il n'y en a pas côté employeur ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Comme une cotisation employeur par salarié ? Ca ne me dit rien mais ok pour revérifier.
Sinon, d'après paie-tunisie.com :
Par ailleurs, Le taux de la contribution sociale de solidarité (CSS) est relevé de 1% à 3% pour les banques résidentes et non résidentes ainsi que les établissements financiers et les assurances.
Il passe de 1% à 2% pour les sociétés soumises à l'impôt au taux de 35%, telles que les sociétés d'investissement, les sociétés de recouvrement, les sociétés pétrolières, les sociétés de télécom, les grandes surfaces, les concessionnaires d'automobiles et les franchises.
bareme_irpp = parameters(period.start).impot_revenu.bareme.copy() | ||
bareme_css = parameters(period.start).prelevements_sociaux.contribution_sociale_solidarite.salarie | ||
bareme_irpp.add_tax_scale(bareme_css) | ||
return - irpp_mensuel_salarie - non_exonere * bareme_irpp.calc( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
L'article 39 de la loi de finance 2020 exonère de CSS les revenus annuels nets inférieurs à 5000 TND :
La contribution sociale de solidarité ne s'applique pas aux personnes physiques qui réalisent exclusivement
les revenus prévus à l'article 25 du code de l'impôt sur le revenu des personnes physiques
et de l'impôt sur les sociétés et dont le revenu annuel net ne dépasse pas 5000 dinars
après déduction des abattements au titre de la situation et charges de famille
prévus à l'article 40 dudit code uniquement.
Autre descriptif de paie-tunisie.com (voir
CSS
).
@benjello Serais-tu d'accord pour un rebase de cette PR ? Il aurait en particulier pour objet de récupérer la mise à jour d' (...)
openfisca test -c openfisca_tunisia tests/
========================================================== test session starts ===========================================================
platform darwin -- Python 3.7.10, pytest-4.6.11, py-1.10.0, pluggy-0.13.1
rootdir: /Users/sch/dev/gitruc/openfisca-tunisia, inifile: setup.cfg
collected 0 items / 1 errors
================================================================= ERRORS =================================================================
_____________________________________________________ ERROR collecting test session ______________________________________________________
../../../.local/share/virtualenvs/tn/lib/python3.7/site-packages/pluggy/hooks.py:286: in __call__
return self._hookexec(self, self.get_hookimpls(), kwargs)
../../../.local/share/virtualenvs/tn/lib/python3.7/site-packages/pluggy/manager.py:93: in _hookexec
return self._inner_hookexec(hook, methods, kwargs)
../../../.local/share/virtualenvs/tn/lib/python3.7/site-packages/pluggy/manager.py:87: in <lambda>
firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
../../../.local/share/virtualenvs/tn/lib/python3.7/site-packages/openfisca_core/tools/test_runner.py:256: in pytest_collect_file
return YamlFile.from_parent(parent, path = path, fspath = path,
E AttributeError: type object 'YamlFile' has no attribute 'from_parent'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
======================================================== 1 error in 0.11 seconds ========================================================= Par ailleurs, n'hésite pas à m'indiquer si la marche à suivre pour la reprise de cette PR te semble claire. 😅 |
Ok pour rebase. |
@sandcha : tu rebases ou je le fait ? |
Various renaming to stick to standards
…_sociale_solidarite.yaml Co-Authored-By: sandcha <[email protected]>
315d755
to
54311ed
Compare
Fix #110