Simulateur Impôts sur les Sociétés - John COLIBRI. Calcul IS |
- résumé : calculateur des impôts sur les sociétés. Tient compte des intérêts sur les comptes d'associés, des tranches d'IS
- mots clé : impôt sur les sociétés, IS, intérêt, SARL, gérant majoritaire,
2020, intérêt sur les comptes d'associés
- matériel utilisé : intel i3-8100, 3.6 gHz, 8GB memory, 128 G and 1 T hard disc
- logiciel utilisé : Windows 10 pro 64 bit, Delphi 7
- champ d'application : Delphi 1 à 7, 2006 à 2010, Xe_nnn, Seattle, Tokyo, Berlin, Delphi 10.3
- niveau : développeur Delphi
- plan :
1 - L'impôt sur les Sociétés Nous sommes actuellement (depuis 1980 !) en SARL et nous nous rémunérions
uniquement sous forme de rémunération (pas de dividendes, intérêt, loyer). Pour comparer avec d'autres formes juridiques, nous souhaitions examiner les diverses impôts et charges correspondant aux autres régimes et revenus possibles.
Nous avons déjà présenté les calculs des charges concernant les rémunérations du dirigeant (dirigeant majoritaire TNS ou directeur SAS assimilé salarié). Les rémunérations et les charges correspondantes sont donc des paramètres d'entrée de ce simulateur.
A présent nous examinons le traitement de l'impôt sur les sociétés, compte tenu du choix - des dividendes versés
- des intérêts sur les comptes d'associé
- des loyers versés au dirigeant
2 - Calcul de l'IS 2.1 - Les Paramètres Nous avons placés les paramètres des charges dans un fichier .TXT. Ceci permet de faire les calculs sur des valeurs de taux différentes (si les règles de
calcul ne changent pas trop)
// --- IS 2020 (exercices ouverts après le 1er Janvier 2019)
tranche_is_1 38120,00 15,0
tranche_is_2 500000,00 28,0
taux_interet_moyen_pret 1,31 // _jan_2020
|
2.2 - Calculs Quelques définitions - IS : Impôt sur les Sociétés, IR: Impôt sur les Revenus
- la flat tax ou FPU Prélèvement Forfaitaire Unique (30 %) se décompose ainsi
- 17.2 % sont prélevés au titre de la CSG
- 12.8 % sont prélevés au niveau de l'Impôt personnel
- SAS, directeur, assimilé salarié:
- SARL, gérant majoritaire (TNS: travailleur non salarié)
Les règles sont les suivantes - pour les intérêts sur le capital et les comptes courants d'associés,
déductible dans le calcul de l'IS la partie calculé avec un "taux moyenne des taux effectifs moyens pratiqués par les établissements de crédit pour les prêts à taux variable aux entreprises d'une durée initiale supérieure à deux ans"
Ces intérêts sont - déduits comme des charges pour la portion dont le taux est inférieur au taux moyen etc
- taxés au taux flat tax au niveau de l'IR
- loyers : déduits des charges, taxés comme des revenus immobiliers au niveau de l'IR
- dividendes :
- directeur SAS : dividendes déduit comme des charges, taxé au taux flat tax au niveau de l'IR
- gérant majoritaire SARL (ne joue que sur les charges, pas l'IS)
- le montant inférieur à 10 % du capital social plus compte courant d'associé : flat tax
- le montant supérieur à 10 %: charges comme les rémunérations
3 - Le Projet Delphi de calcul de l'IS 3.1 - La classe de calcul Voici la définition de la classe de calcul:
Type c_calcul_is=
Class(c_basic_object)
m_title: String;
m_tranche_is_count: integer;
m_seuil_is_array, m_taux_is_array: Array Of Double;
m_c_detail_result_list: tStrings;
m_c_key_list, m_c_value_list: tStringList;
m_capital, m_pourcent_capital: Double;
m_resultat_moins_salaires: Double;
m_micro_foncier_brut: Double;
m_taux_interets_compte_associe, m_interets_compte_associe: Double;
m_dividendes: Double;
m_revenu_sas_IR: Double;
m_IS, m_taux_is_moyen: Double;
m_benefice_avant_is, m_benefice_net, m_reserve: Double;
m_benefice_net_precedent: Double;
Constructor create_calcul_is(p_name: String);
Procedure load_is_parameters_from_file(p_path, p_file_name: String);
Function f_amount(p_key: String): Double;
Function f_rate(p_key: String): Double;
Procedure display_is_parameters;
Procedure calcule_is_sur_revenu_imposable;
Destructor Destroy; Override;
End; // c_calcul_is |
Comme pour le calcul des charges TNS, nous avons chargé les paramètres dans deux "tStringList parallèles"
3.2 - Les calculs Les calculs de l'IS sont les suivants
Procedure c_calcul_is.calcule_is_sur_revenu_imposable;
Var l_c_save_display_strings: tStrings;
l_taux_deductible, l_interets_associes_deductibles,
l_interets_associes_non_deductibles: Double;
l_tranche_is: Integer;
l_base, l_taux_tranche: Double;
l_is_tranche: Double; l_display: String;
Begin If m_benefice_avant_is> 0
Then Begin display_line;
m_interets_compte_associe:= m_taux_interets_compte_associe* m_capital;
l_taux_deductible:= Min(m_taux_interets_compte_associe,
f_rate('taux_interet_moyen_pret')/ 100);
l_interets_associes_deductibles:= l_taux_deductible* m_capital;
l_interets_associes_non_deductibles:= Max(0,
m_interets_compte_associe- l_interets_associes_deductibles);
If l_interets_associes_non_deductibles> 0
Then Begin
display(f_display('interets_associé_deduct' ,
l_interets_associes_deductibles));
display(f_display('interets_non_deduc' ,
l_interets_associes_non_deductibles));
display_line;
End;
display(f_display('resu_moins_salaires' , m_benefice_avant_is));
display_line;
display(f_display(' - micro_foncier' , m_micro_foncier_brut));
display(f_display(' - interets_associé_déduct' , l_interets_associes_deductibles));
display(f_display(' = benef_soumis_a_is' , m_benefice_avant_is));
display(f_display('imposable_a_IS' , m_benefice_avant_is));
display_line; m_IS:= 0;
For l_tranche_is:= 1 To m_tranche_is_count- 1 Do
Begin
l_base:= m_benefice_avant_is- m_seuil_is_array[l_tranche_is- 1];
If l_base> 0
Then Begin
l_base:= Min(m_benefice_avant_is, m_seuil_is_array[l_tranche_is]);
l_base:= l_base- m_seuil_is_array[l_tranche_is- 1];
l_taux_tranche:= m_taux_is_array[l_tranche_is] ;
l_is_tranche:= l_base* l_taux_tranche / 100;
display(Format('is_1 %10.2f %10.2f %5.2f %10.2f',
[m_seuil_is_array[l_tranche_is], l_base, l_taux_tranche, l_is_tranche]));
m_IS:= m_IS+ l_is_tranche;
End;
End; // for l_tranche_is
display_line;
display(Format('total_is %s %10.2f %5.2f %% ',
[f_spaces(21), m_IS, m_IS/ m_benefice_avant_is]));
m_benefice_net:= m_benefice_avant_is- m_IS;
display('--- <');
display_line;
l_display:= f_display('benefices_net', m_benefice_net);
display(l_display);
initialize_display(l_c_save_display_strings);
display_line;
display(f_display('is', m_IS));
display_line; End
Else Begin
display(f_display('*** revenu_avant_is< 0 %10.2', m_benefice_avant_is));
End; End; // calcule_is_sur_revenu_imposable |
4 - Mini How To Voici l'image de l'application Donc
- initialisez le fichier des paramètres. Le fichier pour 2020 est fourni dans le .ZIP
- sélectionnez le fichier de paramètres dans la tFileListBox
- entrez le salaire et les charges. Pour calculer les charges à partir du
salaire net, vous pouvez utiliser les simulateurs SARL et SAS publiés précédemment
- cliquez "compute_"
Nous avons utilisé comme exemple une valeur permettant de calculer deux tranches d'IS
5 - Améliorations Nous n'avons pas présenté ici - les calculs de salaires et charges en amont. C'est l'objet des articles précédents
- les calculs d'impôts sur le revenu en aval. Ce sera, vous l'avez deviné, l'objet de l'article qui suit
6 - Liens
7 - Télécharger le code source Delphi Vous pouvez télécharger: Ce .ZIP qui comprend:
- le .DPR, la forme principale, les formes annexes eventuelles
- les fichiers de paramètres (le schéma et le batch de création)
- dans chaque .ZIP, toutes les librairies nécessaires à chaque projet (chaque .ZIP est autonome)
Ces .ZIP, pour les projets en Delphi 6, contiennent des chemins RELATIFS. Par conséquent: - créez un répertoire n'importe où sur votre machine
- placez le .ZIP dans ce répertoire
- dézippez et les sous-répertoires nécessaires seront créés
- compilez et exécutez
Ces .ZIP ne modifient pas votre PC (pas de changement de la Base de Registre, de DLL ou autre). Pour supprimer le projet, effacez le répertoire.
La notation utilisée est la notation alsacienne qui consiste à préfixer les identificateurs par la zone de compilation: K_onstant, T_ype, G_lobal,
L_ocal, P_arametre, F_unction, C_lasse. Elle est présentée plus en détail dans l'article La
Notation Alsacienne
Comme d'habitude: - nous vous remercions de nous signaler toute erreur, inexactitude ou
problème de téléchargement en envoyant un e-mail à jcolibri@jcolibri.com. Les corrections qui en résulteront pourront aider les prochains lecteurs
- tous vos commentaires, remarques, questions, critiques, suggestion d'article, ou mentions d'autres sources sur le même sujet seront de même les bienvenus à jcolibri@jcolibri.com.
- plus simplement, vous pouvez taper (anonymement ou en fournissant votre e-mail pour une réponse) vos commentaires ci-dessus et nous les envoyer en cliquant "envoyer" :
- et si vous avez apprécié cet article, faites connaître notre site, ajoutez un lien dans vos listes de liens ou citez-nous dans vos
blogs ou réponses sur les messageries. C'est très simple: plus nous aurons de visiteurs et de références Google, plus nous écrirons d'articles.
8 - L'auteur
John COLIBRI est passionné par le développement Delphi et les applications de Bases de Données. Il a écrit de nombreux livres et articles, et partage son temps entre le développement de projets (nouveaux projets, maintenance, audit, migration BDE, migration Xe_n, refactoring) pour ses clients, le
conseil (composants, architecture, test) et la
formation. Son site contient des articles
avec code source, ainsi que le programme et le calendrier des stages de formation Delphi, base de données, programmation objet, Services Web, Tcp/Ip et
UML qu'il anime personellement tous les mois, à Paris, en province ou sur site client. |