4 changed files with 181 additions and 0 deletions
@ -0,0 +1,3 @@
|
||||
# Pyikb: Nederlandse inkomstenbelasting voor ZZP-ers en 2-man(/vrouw) V.O.F. |
||||
|
||||
Dit is een Nederlandse repository. |
@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env python3 |
||||
# -*- coding: utf-8 -*- |
||||
""" |
||||
Author: J.A. de Jong - ASCEE |
||||
|
||||
""" |
||||
from .pyikb import * |
@ -0,0 +1,147 @@
|
||||
#!/usr/bin/env python3 |
||||
# -*- coding: utf-8 -*- |
||||
""" |
||||
Author: J.A. de Jong - ASCEE |
||||
|
||||
""" |
||||
__all__ = ['IKB_single'] |
||||
|
||||
|
||||
class IKB_single: |
||||
""" |
||||
Inkomstenbelasting voor een ZZP-er, voor gegeven brutowinst |
||||
""" |
||||
def __init__(self, jaar=2019, |
||||
startersaftrek: bool = False, |
||||
ondernemersaftrek: bool = True, |
||||
priveaftrek: float = 0., |
||||
voorlopig: float = 0., |
||||
verbose = True, |
||||
): |
||||
""" |
||||
Initialiseer een IKB-klasse voor een enkele ondernemer. |
||||
|
||||
Args: |
||||
startersaftrek: True als de startersaftrek toegepast moet worden |
||||
ondernemersaftrek: True als de ondernemersaftrekposten, zoals |
||||
MKB-winstvrijstelling en zelfstandigenaftrek toegepast dient te |
||||
worden. |
||||
priveaftrek: Prive-aftrekposten (denk aan premie A.O.V.) |
||||
voorlopig: Reeds betaalde hoeveelheid belasting in voorlopige |
||||
aanslag |
||||
|
||||
""" |
||||
|
||||
if jaar != 2019: |
||||
raise NotImplementedError('2019 kan alleen in deze versie') |
||||
|
||||
self.sa = startersaftrek |
||||
self.oa = ondernemersaftrek |
||||
self.priveaftrek = priveaftrek |
||||
self.voorlopig = voorlopig |
||||
|
||||
def bereken(self, brutowinst:float, |
||||
investeringen:float=0.): |
||||
""" |
||||
Bereken de te betalen IKB over 2019 |
||||
|
||||
Args: |
||||
brutowinst: winst uit ondernememing dat voor rekening van deze |
||||
persoon komt (€). |
||||
voorlopig: reeds betaald via voorlopige aanslag (€) |
||||
investeringen: vul hier het totaal in van het bedrag aan |
||||
investeringen dat dit jaar gedaan is (€). Dit wordt gebruikt voor |
||||
het berekenen van de kleinschaligheidsinvesteringsaftrek (KIA). Let |
||||
op: zet dit op 0 voor een V.O.F.! |
||||
|
||||
Returns: |
||||
Nog te betalen IKB voor het jaar (€) |
||||
|
||||
""" |
||||
|
||||
nettowinst = brutowinst |
||||
if self.oa: |
||||
# Zelfstandigenaftrek |
||||
nettowinst = max(nettowinst - 7280, 0) |
||||
if self.sa: |
||||
nettowinst = max(nettowinst - 2123, 0) |
||||
|
||||
if self.oa: |
||||
# MKB-winstvrijstelling |
||||
nettowinst *= (1 - 0.14) |
||||
|
||||
# Kleinschaligheidsinvesteringsaftrek |
||||
if investeringen <= 2300: |
||||
kia = 0. |
||||
elif investeringen <= 57321.: |
||||
kia = 0.28*investeringen |
||||
elif investeringen <= 106150.: |
||||
kia = 16051 |
||||
elif investeringen <= 318449.: |
||||
kia = 16051 - 0.0756*(investeringen - 106150) |
||||
else: |
||||
kia = 0. |
||||
|
||||
BI = max(0, nettowinst - self.priveaftrek - kia) |
||||
# print(f'Nettowinst: € {nettowinst}') |
||||
print(f'Verzamelinkomen: {BI}') |
||||
|
||||
# Afdeling: inkomstenbelasting #################### |
||||
# ibz: inkomensafhankelijke bijdrage z.v.w. |
||||
ibzvw = min(BI, 54614)*0.0565 |
||||
print(f'IBZVW: {ibzvw}') |
||||
|
||||
s1end = 20384. |
||||
perc_s1 = .3655 |
||||
|
||||
s2end = 34300. |
||||
perc_s2 = 0.381 |
||||
|
||||
s3end = 68507. |
||||
perc_s3 = 0.381 |
||||
perc_s4 = 0.5175 |
||||
|
||||
# inkomstenbelasting schijven |
||||
ibs1 = min(BI, s1end)*perc_s1 |
||||
print(f'IB Schijf 1: {ibs1}') |
||||
ibs2 = max(min(BI, s2end) - s1end, 0)*perc_s2 |
||||
print(f'IB Schijf 2: {ibs2}') |
||||
ibs3 = max(min(BI, s3end) - s2end, 0)*perc_s3 |
||||
print(f'IB Schijf 3: {ibs3}') |
||||
ibs4 = max(min(BI, s3end) - s3end, 0)*perc_s4 |
||||
print(f'IB Schijf 4: {ibs4}') |
||||
|
||||
belasting_box1 = ibzvw + ibs1+ibs2+ibs3+ibs4 |
||||
print(f'Belasting box 1: {belasting_box1}') |
||||
assert belasting_box1 >= 0 |
||||
|
||||
# Afdeling: Heffingskortingen #################### |
||||
|
||||
# Algemene heffingskorting |
||||
if BI <= 20384: |
||||
ahk = 2477 |
||||
elif BI <= 68507: |
||||
ahk = 2477 - 0.05147 * (BI - 20384) |
||||
else: |
||||
ahk = 0 |
||||
print(f'Alg. hk: {ahk}') |
||||
|
||||
# Arbeidskorting |
||||
if BI < 9694: |
||||
ak = 0.01754 * BI |
||||
elif BI <= 20940: |
||||
ak = 170 + 0.28712*(BI - 9694) |
||||
elif BI <= 34060: |
||||
ak = 3399. |
||||
elif BI <= 90710: |
||||
ak = 3399 - 0.06*(BI - 34060) |
||||
else: |
||||
ak = 0. |
||||
print(f'Arbeidskorting: {ak}') |
||||
|
||||
belasting = max(0, belasting_box1 - ahk - ak) |
||||
return belasting - self.voorlopig |
||||
|
||||
|
||||
# class IKB_VOF: |
||||
|
@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env python3 |
||||
# -*- coding: utf-8 -*- |
||||
""" |
||||
Author: J.A. de Jong - ASCEE |
||||
|
||||
""" |
||||
from setuptools import setup |
||||
|
||||
DESCR = open('README.md','r').read() |
||||
|
||||
setup( |
||||
name="Pyikb", |
||||
version="1.0", |
||||
packages=['pyikb'], |
||||
author='J.A. de Jong - ASCEE', |
||||
author_email="j.a.dejong@ascee.nl", |
||||
# Project uses reStructuredText, so ensure that the docutils get |
||||
# installed or upgraded on the target machine |
||||
install_requires=['matplotlib>=1.0', 'numpy>=1.0'], |
||||
license='GPLv3', |
||||
description=DESCR, |
||||
keywords="Inkomstenbelasting, ZZP", |
||||
url="https://code.ascee.nl/ASCEE/pyikb", |
||||
) |
Loading…
Reference in new issue