Commit ee5f47c2 by Owo Sugiana

Discount denda dan pokok Kota Tasik

1 parent 820aa258
0.4.9 2026-10-17
----------------
- Discount denda dan pokok Kota Tasikmalaya
0.4.8 2026-10-14 0.4.8 2026-10-14
---------------- ----------------
- Buang definisi field yang berlebihan - Buang definisi field yang berlebihan
......
...@@ -3,7 +3,7 @@ requires = ['setuptools >= 64'] ...@@ -3,7 +3,7 @@ requires = ['setuptools >= 64']
[project] [project]
name = 'sismiop-models' name = 'sismiop-models'
version = '0.4.8' version = '0.4.9'
dependencies = [ dependencies = [
'sqlalchemy', 'sqlalchemy',
'zope.sqlalchemy', 'zope.sqlalchemy',
......
...@@ -84,6 +84,7 @@ def show_inquiry(inq): ...@@ -84,6 +84,7 @@ def show_inquiry(inq):
show_rp('Total Tagihan', inq.total) show_rp('Total Tagihan', inq.total)
show_field(inq.invoice, 'status_pembayaran_sppt') show_field(inq.invoice, 'status_pembayaran_sppt')
show_field(inq.invoice, 'status_tagihan_sppt') show_field(inq.invoice, 'status_tagihan_sppt')
show_field(inq.invoice, 'denda_status')
show_field(inq.invoice, 'pbb_yg_harus_dibayar_sppt') show_field(inq.invoice, 'pbb_yg_harus_dibayar_sppt')
show_field(inq.invoice, 'pbb_terhutang_sppt') show_field(inq.invoice, 'pbb_terhutang_sppt')
show_field(inq.invoice, 'faktor_pengurang_sppt') show_field(inq.invoice, 'faktor_pengurang_sppt')
......
from datetime import date from datetime import date
from ..models.tasik_kota import ( from ..models.tasik_kota import Sppt
Sppt, from .base import get_db_session
PembayaranSppt,
)
from .tasik_kab import ( from .tasik_kab import (
AvailableInvoice, AvailableInvoice,
Inquiry as BaseInquiry, Inquiry as BaseInquiry,
...@@ -10,23 +8,59 @@ from .tasik_kab import ( ...@@ -10,23 +8,59 @@ from .tasik_kab import (
) )
AWAL_DISC = date(2026, 10, 17)
AKHIR_DISC = date(2026, 11, 17)
class Inquiry(BaseInquiry): class Inquiry(BaseInquiry):
def get_invoice_model(self): # Override def get_invoice_model(self): # Override
return Sppt return Sppt
def get_payment_model(self): # Override
return PembayaranSppt
def get_persen_denda(self): # Override def get_persen_denda(self): # Override
if self.invoice.thn_pajak_sppt < '2024': if self.invoice.thn_pajak_sppt < '2024':
return 2 return 2
return 1 return 1
def hitung_discount(self): # Override def hitung_discount_denda(self):
if self.invoice.denda_status == '1': if self.invoice.denda_status == '1':
self.discount = int(self.invoice.denda_pbb or 0) self.discount_denda = int(self.invoice.denda_pbb or 0)
elif AWAL_DISC <= self.tgl_bayar <= AKHIR_DISC:
if self.invoice.thn_pajak_sppt <= '2026':
self.discount_denda = self.denda
def hitung_discount_pokok(self):
if AWAL_DISC <= self.tgl_bayar <= AKHIR_DISC:
if self.invoice.thn_pajak_sppt >= '2026':
return
if not self.tahun_lunas('2026'):
return
if '2021' <= self.invoice.thn_pajak_sppt <= '2025':
disc = 0.25
elif '2013' <= self.invoice.thn_pajak_sppt <= '2020':
disc = 0.5
else:
# Ketentuan discount pokok seratus persen ini membuat
# tidak bisa dibayar karena tagihannya nol
disc = 1
self.discount_pokok = int(disc * self.tagihan)
def hitung_discount(self): # Override
self.discount_denda = self.discount_pokok = 0
self.hitung_discount_denda()
self.hitung_discount_pokok()
self.discount = self.discount_denda + self.discount_pokok
def before_save(self, payment): # Override def before_save(self, payment): # Override
payment.denda_sppt = self.denda - self.discount payment.denda_sppt = self.denda - self.discount_denda
payment.discount_denda = self.discount_denda
payment.discount_pokok = self.discount_pokok
# Sekedar catatan # Sekedar catatan
payment.denda_sblm_diskon = self.denda payment.denda_sblm_diskon = self.denda
def tahun_lunas(self, tahun):
db_session = get_db_session()
q = db_session.query(Sppt)
q = self.get_filter_op(q)
q = q.filter_by(thn_pajak_sppt=tahun)
row = q.first()
return row and row.status_pembayaran_sppt == '1'
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!