Commit 6913772d by Owo Sugiana

Jangan hitung tagihan bila status lunas

1 parent 3dfd900b
0.2.11 2023-08-29
-----------------
- Jangan hitung tagihan bila status lunas
- Discount Kota Tangerang Selatan
0.2.10 2023-08-16 0.2.10 2023-08-16
----------------- -----------------
- Discount Kabupaten Bekasi - Discount Kabupaten Bekasi
......
...@@ -161,6 +161,7 @@ class Inquiry(Query): ...@@ -161,6 +161,7 @@ class Inquiry(Query):
self.persen_denda = persen_denda self.persen_denda = persen_denda
# Digunakan untuk ISO8583 # Digunakan untuk ISO8583
self.tagihan = self.denda = self.discount = self.total = 0 self.tagihan = self.denda = self.discount = self.total = 0
if not self.is_paid():
self.hitung() self.hitung()
def get_kelurahan_model(self): def get_kelurahan_model(self):
...@@ -239,7 +240,7 @@ class Inquiry(Query): ...@@ -239,7 +240,7 @@ class Inquiry(Query):
return self.invoice.status_pembayaran_sppt return self.invoice.status_pembayaran_sppt
def is_paid(self): def is_paid(self):
return self.total < 1 return self.get_status_pembayaran() == '1'
def get_payment_sum(self): def get_payment_sum(self):
Payment = self.get_payment_model() Payment = self.get_payment_model()
...@@ -407,7 +408,7 @@ class AvailableInvoice(Query): ...@@ -407,7 +408,7 @@ class AvailableInvoice(Query):
if not inv: if not inv:
continue continue
inq = inq_cls(invoice=inv) inq = inq_cls(invoice=inv)
if inq.is_paid(): if inq.total < 1:
continue continue
no += 1 no += 1
msg = self.get_msg(inq) msg = self.get_msg(inq)
......
# File ini berdasarkan Peraturan Walikota Tangerang Selatan Bulan April
# Tahun 2021
from datetime import ( from datetime import (
date, date,
datetime, datetime,
...@@ -22,13 +20,8 @@ from .default import ( ...@@ -22,13 +20,8 @@ from .default import (
from ..models.tangsel import PembayaranSppt from ..models.tangsel import PembayaranSppt
AKHIR_DISC_2022 = date(2022, 12, 31) AWAL_DISC = date(2023, 9, 1)
AKHIR_DISC = date(2023, 12, 28)
AWAL_DISC_PERIODE_1 = date(2023, 1, 1)
AKHIR_DISC_PERIODE_1 = date(2023, 4, 30)
AWAL_DISC_PERIODE_2 = date(2023, 5, 1)
AKHIR_DISC_PERIODE_2 = date(2023, 6, 30)
class Inquiry(BaseInquiry): class Inquiry(BaseInquiry):
...@@ -53,17 +46,6 @@ class Inquiry(BaseInquiry): ...@@ -53,17 +46,6 @@ class Inquiry(BaseInquiry):
tagihan = self.invoice.pbb_yg_harus_dibayar_sppt - sisa tagihan = self.invoice.pbb_yg_harus_dibayar_sppt - sisa
self.tagihan = round_up(tagihan) self.tagihan = round_up(tagihan)
def tahun_2022_belum_lunas(self):
DBSession = get_db_session()
Sppt = self.get_invoice_model()
q = DBSession.query(Sppt)
q = self.get_filter_op(q)
q = q.filter_by(thn_pajak_sppt='2022')
row = q.first()
if row:
return row.status_pembayaran_sppt != '1'
return True
def hitung_denda(self): # Override def hitung_denda(self): # Override
super().hitung_denda() super().hitung_denda()
self.denda_sblm_diskon = self.denda self.denda_sblm_diskon = self.denda
...@@ -79,56 +61,38 @@ class Inquiry(BaseInquiry): ...@@ -79,56 +61,38 @@ class Inquiry(BaseInquiry):
# faktor_pengurang = self.invoice.faktor_pengurang_sppt or 0 # faktor_pengurang = self.invoice.faktor_pengurang_sppt or 0
# if faktor_pengurang > 0: # if faktor_pengurang > 0:
# return 0 # return 0
if self.invoice.thn_pajak_sppt >= '2014' and \ if self.invoice.thn_pajak_sppt < '2014':
self.invoice.thn_pajak_sppt <= '2021':
disc = 0.3
elif self.invoice.thn_pajak_sppt < '2014':
disc = 0.75 disc = 0.75
elif '2014' <= self.invoice.thn_pajak_sppt <= '2020':
disc = 0.3
else: else:
disc = 0 disc = 0
return int(disc * self.tagihan) return int(disc * self.tagihan)
def hitung_discount_2022(self): def hitung_discount_denda(self):
if self.tgl_bayar > AKHIR_DISC_2022: if '1994' <= self.invoice.thn_pajak_sppt <= '2022':
return
if self.tahun_2022_belum_lunas():
return
self.discount_denda = self.hitung_discount_denda()
self.discount_pokok = self.hitung_discount_pokok()
return True
def hitung_discount_denda_periode_1(self):
if self.invoice.thn_pajak_sppt < '2023':
return self.denda # discount 100% return self.denda # discount 100%
return 0 return 0
def hitung_discount_pokok_periode_1(self): def tahun_lunas(self, tahun):
if self.invoice.thn_pajak_sppt == '2023': DBSession = get_db_session()
disc = 0.1 Sppt = self.get_invoice_model()
elif self.invoice.thn_pajak_sppt >= '2014' and \ q = DBSession.query(Sppt)
self.invoice.thn_pajak_sppt <= '2022': q = self.get_filter_op(q)
disc = 0.3 q = q.filter_by(thn_pajak_sppt=tahun)
else: row = q.first()
disc = 0.75 return row and row.status_pembayaran_sppt == '1'
return int(disc * self.tagihan)
def hitung_discount_pokok_periode_2(self):
if self.invoice.thn_pajak_sppt == '2023':
disc = 0.05
return int(disc * self.tagihan)
return 0
def hitung_discount(self): # Override def hitung_discount(self): # Override
self.discount_pokok = self.discount_denda = 0 self.discount_pokok = self.discount_denda = 0
if self.hitung_discount_2022(): if self.tgl_bayar < AWAL_DISC:
return return
if self.tgl_bayar >= AWAL_DISC_PERIODE_1 and \ if self.tgl_bayar > AKHIR_DISC:
self.tgl_bayar <= AKHIR_DISC_PERIODE_1: return
self.discount_denda = self.hitung_discount_denda_periode_1() if not self.tahun_lunas('2023'):
self.discount_pokok = self.hitung_discount_pokok_periode_1() return
elif self.tgl_bayar >= AWAL_DISC_PERIODE_2 and \ self.discount_pokok = self.hitung_discount_pokok()
self.tgl_bayar <= AKHIR_DISC_PERIODE_2: self.discount_denda = self.hitung_discount_denda()
self.discount_pokok = self.hitung_discount_pokok_periode_2()
self.discount = self.discount_denda + self.discount_pokok self.discount = self.discount_denda + self.discount_pokok
def before_save(self, payment): # Override def before_save(self, payment): # Override
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!