Commit 0ccddab7 by Owo Sugiana

Discount 2023 Tangerang Selatan

2 parents d639c18e 001fa49a
0.1.41 2022-12-30
0.1.47 2022-12-30
-----------------
- Discount 2023 untuk Tangerang Selatan
0.1.46 2022-10-29
-----------------
- Rumus discount denda Kota Bekasi
0.1.45 2022-10-9
----------------
- Rumus discount denda Kota Bogor
0.1.44 2022-10-1
----------------
- Tambah Kabupaten Bandung
- Rumus discount denda Kota Cilegon
- Rumus discount denda Kota Banjar
0.1.43 2022-9-17
----------------
- Rumus discount denda Majalengka
- Rumus tagihan pokok Kabupaten Cirebon
0.1.42 2022-8-18
----------------
- Rumus discount Kota Tasik
0.1.41 2022-8-16
----------------
- Rumus discount Kota Tangerang
0.1.40 2022-8-6
---------------
- Di Tangerang Selatan discount pokok tidak perlu memperhatikan nilai
......
......@@ -2,6 +2,7 @@ from sqlalchemy import (
Column,
Float,
String,
BigInteger,
)
from .tasik_kab import (
ObjekPajak,
......@@ -23,3 +24,4 @@ class Sppt(BaseSppt):
class PembayaranSppt(BasePembayaranSppt):
__table_args__ = dict(extend_existing=True)
denda_sblm_diskon = Column(Float)
discount = Column(BigInteger)
from datetime import date
from .sumedang import (
AvailableInvoice as BaseAvailableInvoice,
Inquiry as BaseInquiry,
Reversal,
get_db_session,
)
AWAL_DISC = date(2022, 10, 1)
AKHIR_DISC = date(2022, 12, 31)
class Inquiry(BaseInquiry):
def hitung_discount(self): # Override
if self.tgl_bayar < AWAL_DISC:
return
if self.tgl_bayar > AKHIR_DISC:
return
if self.invoice.thn_pajak_sppt < '1994':
return
if self.invoice.thn_pajak_sppt > '2022':
return
if self.tahun_1993_dan_sebelumnya_belum_lunas():
return
self.discount = self.denda
def before_save(self, payment): # Override
payment.denda_sppt = self.denda - self.discount
def tahun_1993_dan_sebelumnya_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(Sppt.thn_pajak_sppt <= '1993')
q = q.filter_by(status_pembayaran_sppt=0)
return q.first()
class AvailableInvoice(BaseAvailableInvoice):
def get_inquiry_class(self): # Override
return Inquiry
# Keputusan Wali Kota Subang
# NOMOR 973/ /2022
# 1. Tanggal bayar Maret - Desember 2022
# 2. Tahun pajak hingga 2021
# 3. Discount denda 100%
from datetime import date
from .default import (
Inquiry as BaseInquiry,
......@@ -12,7 +6,9 @@ from .default import (
)
AWAL_DISC = date(2022, 3, 1)
# Keputusan Wali Kota Banjar
# Nomor 973/323/2022
AWAL_DISC = date(2022, 10, 1)
AKHIR_DISC = date(2022, 12, 31)
......@@ -22,7 +18,7 @@ class Inquiry(BaseInquiry):
return
if self.tgl_bayar > AKHIR_DISC:
return
if self.invoice.thn_pajak_sppt > '2021':
if self.invoice.thn_pajak_sppt != '2022':
return
self.discount = self.denda
......
......@@ -14,8 +14,8 @@ from .binjai import (
)
AWAL_DISC = date(2022, 3, 10)
AKHIR_DISC = date(2022, 3, 31)
AWAL_DISC = date(2022, 10, 28)
AKHIR_DISC = date(2022, 11, 28)
class Inquiry(BaseInquiry):
......@@ -27,12 +27,7 @@ class Inquiry(BaseInquiry):
def hitung_discount(self): # Override
if self.tgl_bayar < AWAL_DISC or self.tgl_bayar > AKHIR_DISC:
return
if self.invoice.faktor_pengurang_sppt != 0:
return
if self.invoice.thn_pajak_sppt == '2022':
self.discount = int(0.1 * self.tagihan)
else:
self.discount = self.denda
self.discount = self.denda
def before_save(self, payment): # Override
payment.denda_sppt = self.denda - self.discount
......
......@@ -15,9 +15,8 @@ from .default import (
)
# Discount pokok berdasarkan bulan
DISC_POKOK_2022 = {2: 0.15, 3: 0.1, 4: 0.05}
DISC_POKOK_MAX_2017 = {2: 0.2, 3: 0.2, 4: 0.2}
AWAL_DISC = date(2022, 10, 10)
AKHIR_DISC = date(2022, 12, 23)
class Common(Query):
......@@ -59,31 +58,25 @@ class Inquiry(BaseInquiry, Common):
pst = q.first()
return pst and pst.no_sk and pst.status_sk_peng_pst != '2'
def hitung_discount_pokok(self):
if self.invoice.thn_pajak_sppt == '2022':
potongan = DISC_POKOK_2022[self.tgl_bayar.month]
elif self.invoice.thn_pajak_sppt <= '2017':
potongan = DISC_POKOK_MAX_2017[self.tgl_bayar.month]
else:
return
self.discount_pokok = int(potongan * self.tagihan)
def hitung_discount_denda(self):
if self.invoice.thn_pajak_sppt <= '2021':
self.discount_denda = self.denda
self.discount_denda = self.denda
def hitung_discount(self): # Override
self.discount_pokok = self.discount_denda = 0
if self.tgl_bayar.year > 2022:
if self.tgl_bayar < AWAL_DISC:
return
if self.tgl_bayar.month not in (2, 3, 4):
if self.tgl_bayar > AKHIR_DISC:
return
if self.invoice.thn_pajak_sppt > '2022':
return
if self.tgl_bayar.year > 2022:
return
if not self.is_e_sppt():
return
if self.denda:
self.hitung_discount_denda()
if not self.is_pst():
self.hitung_discount_pokok()
# if not self.is_pst(): # Sertakan ini bila ada discount pokok
# self.hitung_discount_pokok()
self.discount = self.discount_pokok + self.discount_denda
def before_save(self, bayar): # Override
......
# File ini berdasarkan Surat Keputusan Walikota Cilegon
# Nomor 973/kep. -BPKAD/2020
from datetime import date
from .default import (
Inquiry as BaseInquiry,
......@@ -9,15 +7,18 @@ from .default import (
from ..models.cilegon import PembayaranSppt
AWAL_DISC = date(2020, 9, 1)
AKHIR_DISC = date(2020, 11, 30)
# SK WALIKOTA CILEGON
# NOMOR 973/Kep.114-BPKAD/2022
# 19 SEPTEMBER 2022
AWAL_DISC = date(2022, 10, 1)
AKHIR_DISC = date(2022, 12, 31)
class Inquiry(BaseInquiry):
def hitung_discount_denda(self):
if self.tgl_bayar < AWAL_DISC or self.tgl_bayar > AKHIR_DISC or \
self.invoice.thn_pajak_sppt < '1990' or \
self.invoice.thn_pajak_sppt > '2020':
self.invoice.thn_pajak_sppt > '2022':
return 0
return self.denda
......
from datetime import date
from sqlalchemy import func
from opensipkd.hitung import round_up
from ..models.kuningan import PembayaranSppt
from .base import (
get_db_session,
Query,
)
from .base import get_db_session
from .default import (
Inquiry as BaseInquiry,
Reversal as BaseReversal,
......@@ -11,7 +10,7 @@ from .default import (
)
AKHIR_DISC_DENDA = date(2022, 3, 31)
AKHIR_DISC_DENDA = date(2022, 12, 31)
# Discount pokok berdasarkan bulan
NILAI_DISC_POKOK = {
......@@ -31,6 +30,25 @@ class Inquiry(BaseInquiry):
def get_payment_model(self): # Override
return PembayaranSppt
def hitung_pokok(self): # Override
DBSession = get_db_session()
Payment = self.get_payment_model()
q = DBSession.query(
func.sum(Payment.jml_sppt_yg_dibayar).
label('jml_sppt_yg_dibayar'),
func.sum(Payment.denda_sppt).
label('denda_sppt'))
q = self.get_filter(q)
bayar = q.first()
self.total_bayar = bayar.jml_sppt_yg_dibayar or 0
denda_lalu = bayar.denda_sppt or 0
sisa = float(self.total_bayar - denda_lalu)
tagihan = self.invoice.pbb_yg_harus_dibayar_sppt - sisa
if tagihan < 0:
self.tagihan = 0
else:
self.tagihan = round_up(tagihan)
def hitung_discount(self): # Override
self.discount_pokok = self.discount_denda = 0
if self.invoice.thn_pajak_sppt >= '2009' \
......
......@@ -6,13 +6,13 @@ from .cilegon import (
)
AKHIR_DISC = date(2020, 12, 31)
AKHIR_DISC = date(2022, 12, 31)
class Inquiry(BaseInquiry):
def hitung_discount_denda(self):
if self.tgl_bayar > AKHIR_DISC or \
self.invoice.thn_pajak_sppt < '2012' or \
self.invoice.thn_pajak_sppt > '2019':
self.invoice.thn_pajak_sppt > '2022':
return 0
return self.denda
......@@ -8,16 +8,8 @@ from .tangsel import (
from ..models.tangsel import PembayaranSppt
AWAL_DISC = date(2021, 3, 22)
AKHIR_DISC = date(2021, 6, 30)
TAHUN_PAJAK_DISC_POKOK = '2021'
BUKU_DISC_POKOK = [
(100000, 0),
(500000, 0.2),
(2000000, 0.15),
(5000000, 0.1),
(None, 0.05)]
AWAL_DISC = date(2022, 8, 17)
AKHIR_DISC = date(2022, 8, 31)
class Inquiry(BaseInquiry):
......@@ -27,21 +19,23 @@ class Inquiry(BaseInquiry):
def hitung_discount(self): # Override
self.denda_sblm_diskon = self.denda
self.discount_denda = self.discount_pokok = 0
self.discount = self.discount_pokok = self.hitung_discount_pokok()
def hitung_discount_pokok(self):
if self.tgl_bayar > AKHIR_DISC:
return 0
return
if self.tgl_bayar < AWAL_DISC:
return
self.discount_pokok = self.hitung_discount_pokok()
self.discount_denda = self.hitung_discount_denda()
self.discount = self.discount_pokok + self.discount_denda
def hitung_discount_pokok(self):
if self.invoice.thn_pajak_sppt > '2014':
return 0
if self.invoice.thn_pajak_sppt != TAHUN_PAJAK_DISC_POKOK:
return int(0.77 * self.tagihan)
def hitung_discount_denda(self):
if self.invoice.thn_pajak_sppt > '2021':
return 0
for max_tagihan, disc in BUKU_DISC_POKOK:
if max_tagihan is None:
break
if self.invoice.pbb_yg_harus_dibayar_sppt <= max_tagihan:
break
return int(disc * self.tagihan)
return self.denda
class AvailableInvoice(BaseAvailableInvoice):
......
......@@ -10,6 +10,10 @@ from .tasik_kab import (
)
AWAL_DISC = date(2022, 8, 19)
AKHIR_DISC = date(2022, 12, 31)
class Inquiry(BaseInquiry):
def get_invoice_model(self): # Override
return Sppt
......@@ -20,6 +24,9 @@ class Inquiry(BaseInquiry):
def hitung_discount(self): # Override
if self.invoice.denda_status == '1':
self.discount = int(self.invoice.denda_pbb or 0)
elif self.tgl_bayar >= AWAL_DISC and self.tgl_bayar <= AKHIR_DISC:
if self.invoice.thn_pajak_sppt < '2022':
self.discount = self.denda
def before_save(self, payment): # Override
payment.denda_sppt = self.denda - self.discount
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!