import CotisationsSociales from './cotisations-sociales' ; import ImpotRevenu from './impot-revenu' ; import ImpotSociete from './impot-societe' ; export default class Exercice { capital : number ; ca : number ; charges : number ; remuneration : number ; dividendes : number ; accre2017 : boolean = false ; autresRevenus : number = 0 ; bnc : number = 0 ; nbParts : number = 1 ; forme : string = 'EURL' ; constructor ( private impotSociete , private cotisations , private impotRevenu ) { } exercice ( ) { let res = { remuneration : { cotisationsSociales : 0 , brut : 0 , net : 0 , assietteIR : 0 } , dividendes : { cotisationsSociales : 0 , brut : 0 , assietteIR : 0 , net : 0 } , societe : { ca : 0 , charges : 0 } , IR : { } , IS : { } } ; res . IR . assiette = 0 ; res . IS . assiette = 0 ; res . dividendes . brut = this . dividendes ; res . autresRevenus = this . autresRevenus ; res . bnc = this . bnc ; res . remuneration . net = this . remuneration ; if ( this . forme === 'EURL' ) { this . cotisations . remuneration = res . remuneration . net ; this . cotisations . accre2017 = this . accre2017 ; res . remuneration . cs = this . cotisations ; res . remuneration . cotisationsSociales = this . cotisations . getCotisations ( ) ; res . remuneration . brut = res . remuneration . net + res . remuneration . cotisationsSociales ; res . IR . assiette -= this . cotisations . getCsgCrds ( ) * 0.051 ; } if ( this . forme === 'SASU' ) { res . remuneration . cs = undefined ; let taux = this . accre2017 && res . remuneration . net < 39228 * 0.75 ? 0.35 : 0.89 ; res . remuneration . cotisationsSociales = res . remuneration . net * taux ; res . remuneration . brut = res . remuneration . net + res . remuneration . cotisationsSociales ; } res . remuneration . assietteIR = res . remuneration . net * 0.9 ; res . IR . assiette += res . remuneration . assietteIR ; res . societe . ca = this . ca ; res . societe . charges = this . charges ; res . societe . brut = res . societe . ca - res . societe . charges - res . remuneration . brut ; res . IS . assiette = res . societe . brut ; this . impotSociete . benefice = res . IS . assiette ; res . IS . impot = this . impotSociete . getImpot ( ) ; res . societe . reste = res . societe . brut - res . IS . impot - res . dividendes . brut ; if ( this . dividendes > 0 ) { if ( this . forme === 'SASU' ) { res . dividendes . cotisationsSociales = res . dividendes . brut * 0.155 ; res . dividendes . net = res . dividendes . brut - res . dividendes . cotisationsSociales ; res . dividendes . assietteIR = res . dividendes . brut * 0.6 - res . dividendes . brut * 0.051 ; } else { let dividendes10 = { } ; dividendes10 . brut = this . capital * 0.1 ; dividendes10 . cotisationsSociales = dividendes10 . brut * 0.155 ; dividendes10 . net = dividendes10 . brut - dividendes10 . cotisationsSociales ; res . dividendes . dividendes10 = dividendes10 ; let dividendes90 = { } ; dividendes90 . brut = res . dividendes . brut - dividendes10 . brut ; dividendes90 . cotisationsSociales = dividendes90 . brut * 0.45 ; dividendes90 . net = dividendes90 . brut - dividendes90 . cotisationsSociales ; res . dividendes . dividendes90 = dividendes90 ; res . dividendes . assietteIR = dividendes10 . brut * 0.6 - dividendes10 . brut * 0.051 + dividendes90 . brut * 0.6 - dividendes90 . brut * 0.051 ; res . dividendes . cotisationsSociales = dividendes10 . cotisationsSociales + dividendes90 . cotisationsSociales ; res . dividendes . net = dividendes10 . net + dividendes90 . net ; } res . IR . assiette += res . dividendes . assietteIR ; } res . IR . assiette += this . autresRevenus * 0.9 ; res . IR . assiette += this . bnc * 0.66 ; this . impotRevenu . revenu = res . IR . assiette ; this . impotRevenu . nbParts = this . nbParts ; res . IR . impot = this . impotRevenu . getImpot ( ) ; res . IR . tranches = this . impotRevenu . getTranches ( ) ; res . brut = res . societe . ca - res . societe . charges - res . societe . reste + res . autresRevenus + res . bnc ; res . net = res . remuneration . net + res . dividendes . net + res . autresRevenus + res . bnc - res . IR . impot ; return res ; } }