Public
Snippet $19 authored by Owo Sugiana

Jumlah Bulan Denda

Edited
hitung.py
from datetime import date


def bulan_tunggakan_berdasarkan_tgl(jatuh_tempo, tgl_hitung):
    x = (tgl_hitung.year - jatuh_tempo.year) * 12
    y = tgl_hitung.month - jatuh_tempo.month
    n = x + y
    if n < 0:
        return 0
    if tgl_hitung.day > jatuh_tempo.day:
        n += 1
    if n > 24:
        return 24
    return n


def bulan_tunggakan_berdasarkan_bln(jatuh_tempo, tgl_hitung):
    x = (tgl_hitung.year - jatuh_tempo.year) * 12
    y = tgl_hitung.month - jatuh_tempo.month
    n = x + y
    if n < 0:
        return 0
    #if n == 0:
    #    if tgl_hitung.day > jatuh_tempo.day:
    #        return 1
    if n > 24:
        return 24
    return n


def show(data):
    print(''.join([
        str(data[0]).ljust(12),
        str(data[1]).ljust(11),
        str(data[2]).rjust(7),
        str(data[3]).rjust(7)]))


jatuh_tempo = date(2019, 9, 20)
tgl_bayar_list = [
    (2019, 8, 31),
    (2019, 9, 20),
    (2019, 9, 21),
    (2019, 10, 20),
    (2019, 10, 21),
    (2019, 11, 20),
    (2020, 1, 20),
    (2020, 1, 21),
    ]

show(['Jatuh tempo', 'Tgl bayar', 'By tgl', 'By bln'])
for y, m, d in tgl_bayar_list:
    tgl_bayar = date(y, m, d)
    a = bulan_tunggakan_berdasarkan_tgl(jatuh_tempo, tgl_bayar)
    b = bulan_tunggakan_berdasarkan_bln(jatuh_tempo, tgl_bayar)
    show([jatuh_tempo, tgl_bayar, a, b])