def _rstbrut_from_rstnet(rstnet, csg_rempl, _defaultP): ''' Calcule les pensions de retraites brutes à partir des pensions nettes ''' P = _defaultP.csg.retraite plaf_ss = 12 * _defaultP.cotsoc.gen.plaf_ss csg = scaleBaremes(BaremeDict('csg', P), plaf_ss) crds = scaleBaremes(_defaultP.crds.rst, plaf_ss) taux_plein = combineBaremes(csg['plein']) taux_reduit = combineBaremes(csg['reduit']) taux_plein.addBareme(crds) taux_reduit.addBareme(crds) if hasattr(_defaultP.prelsoc, 'add_ret'): casa = Bareme(name = "casa") casa.addTranche(0, _defaultP.prelsoc.add_ret) taux_plein.addBareme(casa) taux_reduit.addBareme(casa) rst_plein = taux_plein.inverse() rst_reduit = taux_reduit.inverse() rstbrut = (csg_rempl == 2) * rst_reduit.calc(rstnet) + (csg_rempl == 3) * rst_plein.calc(rstnet) return rstbrut
def _salbrut(sali, hsup, type_sal, _defaultP): ''' Calcule le salaire brut à partir du salaire imposable sauf pour les fonctionnaires où il renvoie le tratement indiciaire brut Note : le supplément familial de traitement est imposable ''' plaf_ss = 12 * _defaultP.cotsoc.gen.plaf_ss salarie = scaleBaremes(BaremeDict('sal', _defaultP.cotsoc.sal), plaf_ss) csg = scaleBaremes(BaremeDict('csg', _defaultP.csg), plaf_ss) salarie['noncadre'].update(salarie['commun']) salarie['cadre'].update(salarie['commun']) # log.info("Le dictionnaire des barèmes des cotisations salariés des titulaires de l'Etat contient : \n %s", salarie['fonc']["etat"]) # Salariés du privé noncadre = combineBaremes(salarie['noncadre']) cadre = combineBaremes(salarie['cadre']) # On ajoute la CSG deductible noncadre.addBareme(csg['act']['deduc']) cadre.addBareme(csg['act']['deduc']) nca = noncadre.inverse() cad = cadre.inverse() brut_nca = nca.calc(sali) brut_cad = cad.calc(sali) salbrut = brut_nca * (type_sal == CAT['prive_non_cadre']) salbrut += brut_cad * (type_sal == CAT['prive_cadre']) # public etat # TODO: modifier la contribution exceptionelle de solidarité # en fixant son seuil de non imposition dans le barème (à corriger dans param.xml # et en tenant compte des éléments de l'assiette salarie['fonc']["etat"].update({'excep_solidarite' : salarie['fonc']['commun']['solidarite']}) public_etat = salarie['fonc']["etat"]['pension'] # public_colloc = combineBaremes(salarie['fonc']["colloc"]) TODO: # Pour a fonction publique la csg est calculée sur l'ensemble salbrut(=TIB) + primes # Imposable = TIB - csg( (1+taux_prime)*TIB ) - pension(TIB) + taux_prime*TIB bareme_csg_titulaire_etat = (csg['act']['deduc']).multTaux(1 + TAUX_DE_PRIME, inplace = False, new_name = "csg deduc titutaire etat") public_etat.addBareme(bareme_csg_titulaire_etat) bareme_prime = Bareme(name = "taux de prime") bareme_prime.addTranche(0, -TAUX_DE_PRIME) # barème équivalent à taux_prime*TIB public_etat.addBareme(bareme_prime) etat = public_etat.inverse() # TODO: complete this to deal with the fonctionnaire supp_familial_traitement = 0 # TODO: dépend de salbrut indemnite_residence = 0 # TODO: fix bug # print 'sali', sali / 12 brut_etat = etat.calc(sali) # print 'impot', public_etat.calc(brut_etat) / 12 # print 'brut_etat', brut_etat / 12 salbrut_etat = (brut_etat) # # TODO: fonctionnaire # print 'salbrut_etat', salbrut_etat / 12 salbrut += salbrut_etat * (type_sal == CAT['public_titulaire_etat']) # # <NODE desc= "Supplément familial de traitement " shortname="Supp. fam." code= "supp_familial_traitement" color = "0,99,143"/> # # <NODE desc= "Indemnité de résidence" shortname="Ind. rés." code= "indemenite_residence" color = "0,99,143"/> return salbrut + hsup
def _salbrut(sali, hsup, type_sal, _defaultP): # indemnite_residence, sup_familial ''' Calcule le salaire brut à partir du salaire imposable sauf pour les fonctionnaires où il renvoie le tratement indiciaire brut Note : le supplément familial de traitement est imposable ''' plaf_ss = 12 * _defaultP.cotsoc.gen.plaf_ss salarie = scaleBaremes(BaremeDict('sal', _defaultP.cotsoc.sal), plaf_ss) csg = scaleBaremes(BaremeDict('csg', _defaultP.csg), plaf_ss) salarie['noncadre'].update(salarie['commun']) salarie['cadre'].update(salarie['commun']) log.info( "Le dictionnaire des barèmes des cotisations salariés des titualires de l'Etat contien : \n %s", salarie['fonc']["etat"]) # Salariés du privé noncadre = combineBaremes(salarie['noncadre']) cadre = combineBaremes(salarie['cadre']) # On ajoute la CSG deductible noncadre.addBareme(csg['act']['deduc']) cadre.addBareme(csg['act']['deduc']) nca = noncadre.inverse() cad = cadre.inverse() brut_nca = nca.calc(sali) brut_cad = cad.calc(sali) salbrut = brut_nca * (type_sal == CAT['prive_non_cadre']) salbrut += brut_cad * (type_sal == CAT['prive_cadre']) # public etat # TODO: modifier la contribution exceptionelle de solidarité # en fixant son seuil de non imposition dans le barème (à corriger dans param.xml # et en tenant compte des éléments de l'assiette salarie['fonc']["etat"].update( {'excep_solidarite': salarie['fonc']['commun']['solidarite']}) public_etat = salarie['fonc']["etat"]['pension'] # public_colloc = combineBaremes(salarie['fonc']["colloc"]) TODO: # Pour a fonction publique la csg est calculée sur l'ensemble salbrut(=TIB) + primes # Imposable = TIB - csg( (1+taux_prime)*TIB ) - pension(TIB) + taux_prime*TIB bareme_csg_titulaire_etat = (csg['act']['deduc']).multTaux( 1 + TAUX_DE_PRIME, inplace=False, new_name="csg deduc titutaire etat") public_etat.addBareme(bareme_csg_titulaire_etat) bareme_prime = Bareme(name="taux de prime") bareme_prime.addTranche( 0, -TAUX_DE_PRIME) # barème équivalent à taux_prime*TIB public_etat.addBareme(bareme_prime) etat = public_etat.inverse() # TODO: complete this to deal with the fonctionnaire supp_familial_traitement = 0 # TODO: dépend de salbrut indemnite_residence = 0 # TODO: fix bug # print 'sali', sali / 12 brut_etat = etat.calc(sali) # print 'impot', public_etat.calc(brut_etat) / 12 # print 'brut_etat', brut_etat / 12 salbrut_etat = (brut_etat) # # TODO: fonctionnaire # print 'salbrut_etat', salbrut_etat / 12 salbrut += salbrut_etat * (type_sal == CAT['public_titulaire_etat']) # # <NODE desc= "Supplément familial de traitement " shortname="Supp. fam." code= "supp_familial_traitement" color = "0,99,143"/> # # <NODE desc= "Indemnité de résidence" shortname="Ind. rés." code= "indemenite_residence" color = "0,99,143"/> return salbrut + hsup