Commit 68374631 by Owo Sugiana

Persen denda ganda pada Kabupaten Tangerang

1 parent ca6d69bd
0.5.8 2024-05-15
----------------
- Kabupaten Tangerang menerapkan persen denda ganda: jatuh tempo sebelum April
2024 2%, selain itu 1%
0.5.7 2024-03-14
----------------
- Tambah Kota Tangerang
......
from datetime import date
from opensipkd.hitung import (
bulan_tunggakan_berdasarkan_tgl,
round_up,
)
from ..models.tangerang_kab import (
Kecamatan,
Kelurahan,
......@@ -23,6 +27,22 @@ def dmy(tgl):
return tgl.strftime('%d-%m-%Y')
def hitung_denda(tagihan, jatuh_tempo, tgl_hitung):
if jatuh_tempo >= tgl_hitung:
return 0, 0
jatuh_tempo_batas = date(2024, 3, jatuh_tempo.day)
bulan2persen = bulan_tunggakan_berdasarkan_tgl(
jatuh_tempo, jatuh_tempo_batas)
bulan1persen = bulan_tunggakan_berdasarkan_tgl(
jatuh_tempo_batas, tgl_hitung)
persen = bulan2persen * 2 + bulan1persen
if persen > 48:
persen = 48
bulan = bulan2persen + bulan1persen
denda = float(persen) / 100 * tagihan
return bulan, denda
PERIODE_BAYAR = [
(date(2023, 8, 15), date(2023, 8, 31)),
(date(2023, 10, 1), date(2023, 10, 31)),
......@@ -32,13 +52,15 @@ NOTE_TGL_BAYAR = 'Tanggal bayar {awal} <= {tgl_bayar} <= {akhir}'
class Inquiry(BaseInquiry):
def hitung_denda_waktu(self): # Override
super().hitung_denda_waktu()
self.bln_tunggakan, self.denda_waktu = hitung_denda(
self.tagihan, self.invoice.jatuhtempotgl.date(),
self.tgl_bayar.date())
if self.invoice.bunga < 1 or self.bln_tunggakan < 1:
return
denda_per_bln = self.denda_waktu / self.bln_tunggakan
max_denda = 24 * denda_per_bln
denda = self.denda_waktu + self.invoice.bunga
if denda >= max_denda:
if max_denda > 0 and denda >= max_denda:
self.bln_tunggakan = 24
self.denda_waktu = max_denda - self.invoice.bunga
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!