Skip to content
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

Open
wants to merge 19 commits into
base: main
Choose a base branch
from

Conversation

benjello
Copy link
Member

Fix #110

@benjello benjello requested a review from sandcha August 17, 2019 15:53
Copy link
Contributor

@sandcha sandcha left a 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/tunisia_taxbenefitsystem.py Show resolved Hide resolved
openfisca_tunisia/parameters/impot_revenu/bareme.yaml Outdated Show resolved Hide resolved
+ revenu_assimile_pension
+ revenus_du_capital
+ prestations_sociales
+ impots_directs
Copy link
Contributor

@sandcha sandcha Sep 2, 2019

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 ? 🤔

Copy link
Contributor

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 ?

Copy link
Member Author

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.

Copy link
Contributor

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.

@@ -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):
Copy link
Contributor

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)

Copy link
Member Author

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(
Copy link
Contributor

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 ?

Copy link
Contributor

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.

Copy link
Member Author

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.

@benjello
Copy link
Member Author

benjello commented Sep 9, 2019

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é. slightly_smiling_face

La source fait le calcul avec le barème 2017. Là on est en 2018.

@sandcha
Copy link
Contributor

sandcha commented Sep 9, 2019

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.

@benjello
Copy link
Member Author

benjello commented Sep 9, 2019

Right j'étais sur la mauvaise branche ;-)

@benjello
Copy link
Member Author

benjello commented Sep 9, 2019

Ta source donne aussi un IR différent BTW.

@sandcha
Copy link
Contributor

sandcha commented Sep 9, 2019

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

@benjello
Copy link
Member Author

benjello commented Sep 9, 2019 via email

@benjello
Copy link
Member Author

benjello commented Sep 9, 2019

@sandcha on merge où tu veux refaire le calcul avec les 3DT ? (no rush, just cleaning mood)

@sandcha
Copy link
Contributor

sandcha commented Sep 30, 2019

Ok, si on ignore la source et qu'on retrace le calcul,
voici le cas pour un salaire_imposable de 12000 TND :

  1. On retire 10% d'abattement pour avoir revenu_assimile_salaire_apres_abattements à 10800 TND.
  2. Puis, sur les 10800, on enlève la première tranche : 10800 - 5000 = 5800 pour la 2ème tranche.
  3. On obtient l'irpp de 1508 = 5800 * 0.26 puisque la 2ème tranche est à 26%

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%.
Donc, la contribution_sociale_solidarite devrait être de :
(5800 * 0.27) - (5800 * 0.26) = 1566 - 1508 = 58 TND
Et donc l'équivalent de 4.83 TND/mois mais j'obtiens 9 TND actuellement.

L'erreur est-elle ici ou dans la formule ?

value_type = float
entity = Individu
label = "Contribution sociale de solidarité"
definition_period = MONTH
Copy link
Contributor

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.

Copy link
Member Author

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.

Copy link
Contributor

@sandcha sandcha Feb 24, 2020

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
Copy link
Contributor

sandcha commented Sep 30, 2019

Mémo pour plus tard : l'abattement sur le salaire de 10% est plafonné à 2000 TND d'après finances.gov.tn. Il me semble que nous ne l'appliquons pas. 🤔

@benjello
Copy link
Member Author

benjello commented Oct 2, 2019

@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 !

@benjello
Copy link
Member Author

benjello commented Oct 2, 2019

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
Copy link
Contributor

@sandcha sandcha Feb 24, 2020

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
Copy link
Contributor

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).

Copy link
Member Author

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 ?

Copy link
Contributor

@sandcha sandcha Feb 27, 2020

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(
Copy link
Contributor

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).

@sandcha
Copy link
Contributor

sandcha commented May 1, 2021

@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-core et surtout pytest (de v4.6.11 à v5+) sans laquelle le make test actuel renvoie une erreur de collecte des fichiers de test :

(...)
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. 😅
Sinon, je pense repartir de nos commentaires et tenter de profiter de cette période de déclaration d'impôts en Tunisie pour récupérer des informations sur la CSS.

@benjello
Copy link
Member Author

benjello commented May 1, 2021

Ok pour rebase.

@benjello
Copy link
Member Author

@sandcha : tu rebases ou je le fait ?

@benjello benjello force-pushed the contribution_sociale_solidaire branch from 315d755 to 54311ed Compare September 27, 2024 14:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Distinguer CSS et évolution du barème de l'IRPP
2 participants