hitung.py
933 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from datetime import (
date,
datetime,
)
def round_up(n):
i = int(n)
if n == i:
return i
if n > 0:
return i + 1
return i - 1
def bulan_tunggakan(jatuh_tempo, tgl_hitung):
x = (tgl_hitung.year - jatuh_tempo.year) * 12
y = tgl_hitung.month - jatuh_tempo.month
n = x + y + 1
if tgl_hitung.day <= jatuh_tempo.day:
n -= 1
if n < 1:
n = 0
if n > 24:
n = 24
return n
def hitung_denda(tagihan, jatuh_tempo, persen_denda, tgl_hitung=None):
if jatuh_tempo is None:
return 0, 0
if tgl_hitung is None:
tgl_hitung = date.today()
if isinstance(jatuh_tempo, datetime):
jatuh_tempo = jatuh_tempo.date()
if jatuh_tempo >= tgl_hitung or persen_denda <= 0:
return 0, 0
bulan = bulan_tunggakan(jatuh_tempo, tgl_hitung)
denda = bulan * float(persen_denda) / 100 * tagihan
return bulan, denda