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 - 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 0.1.40 2022-8-6
--------------- ---------------
- Di Tangerang Selatan discount pokok tidak perlu memperhatikan nilai - Di Tangerang Selatan discount pokok tidak perlu memperhatikan nilai
......
...@@ -2,6 +2,7 @@ from sqlalchemy import ( ...@@ -2,6 +2,7 @@ from sqlalchemy import (
Column, Column,
Float, Float,
String, String,
BigInteger,
) )
from .tasik_kab import ( from .tasik_kab import (
ObjekPajak, ObjekPajak,
...@@ -23,3 +24,4 @@ class Sppt(BaseSppt): ...@@ -23,3 +24,4 @@ class Sppt(BaseSppt):
class PembayaranSppt(BasePembayaranSppt): class PembayaranSppt(BasePembayaranSppt):
__table_args__ = dict(extend_existing=True) __table_args__ = dict(extend_existing=True)
denda_sblm_diskon = Column(Float) 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 datetime import date
from .default import ( from .default import (
Inquiry as BaseInquiry, Inquiry as BaseInquiry,
...@@ -12,7 +6,9 @@ from .default import ( ...@@ -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) AKHIR_DISC = date(2022, 12, 31)
...@@ -22,7 +18,7 @@ class Inquiry(BaseInquiry): ...@@ -22,7 +18,7 @@ class Inquiry(BaseInquiry):
return return
if self.tgl_bayar > AKHIR_DISC: if self.tgl_bayar > AKHIR_DISC:
return return
if self.invoice.thn_pajak_sppt > '2021': if self.invoice.thn_pajak_sppt != '2022':
return return
self.discount = self.denda self.discount = self.denda
......
...@@ -14,8 +14,8 @@ from .binjai import ( ...@@ -14,8 +14,8 @@ from .binjai import (
) )
AWAL_DISC = date(2022, 3, 10) AWAL_DISC = date(2022, 10, 28)
AKHIR_DISC = date(2022, 3, 31) AKHIR_DISC = date(2022, 11, 28)
class Inquiry(BaseInquiry): class Inquiry(BaseInquiry):
...@@ -27,12 +27,7 @@ class Inquiry(BaseInquiry): ...@@ -27,12 +27,7 @@ class Inquiry(BaseInquiry):
def hitung_discount(self): # Override def hitung_discount(self): # Override
if self.tgl_bayar < AWAL_DISC or self.tgl_bayar > AKHIR_DISC: if self.tgl_bayar < AWAL_DISC or self.tgl_bayar > AKHIR_DISC:
return return
if self.invoice.faktor_pengurang_sppt != 0: self.discount = self.denda
return
if self.invoice.thn_pajak_sppt == '2022':
self.discount = int(0.1 * self.tagihan)
else:
self.discount = self.denda
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
......
...@@ -15,9 +15,8 @@ from .default import ( ...@@ -15,9 +15,8 @@ from .default import (
) )
# Discount pokok berdasarkan bulan AWAL_DISC = date(2022, 10, 10)
DISC_POKOK_2022 = {2: 0.15, 3: 0.1, 4: 0.05} AKHIR_DISC = date(2022, 12, 23)
DISC_POKOK_MAX_2017 = {2: 0.2, 3: 0.2, 4: 0.2}
class Common(Query): class Common(Query):
...@@ -59,31 +58,25 @@ class Inquiry(BaseInquiry, Common): ...@@ -59,31 +58,25 @@ class Inquiry(BaseInquiry, Common):
pst = q.first() pst = q.first()
return pst and pst.no_sk and pst.status_sk_peng_pst != '2' 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): 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 def hitung_discount(self): # Override
self.discount_pokok = self.discount_denda = 0 self.discount_pokok = self.discount_denda = 0
if self.tgl_bayar.year > 2022: if self.tgl_bayar < AWAL_DISC:
return 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 return
if not self.is_e_sppt(): if not self.is_e_sppt():
return return
if self.denda: if self.denda:
self.hitung_discount_denda() self.hitung_discount_denda()
if not self.is_pst(): # if not self.is_pst(): # Sertakan ini bila ada discount pokok
self.hitung_discount_pokok() # self.hitung_discount_pokok()
self.discount = self.discount_pokok + self.discount_denda self.discount = self.discount_pokok + self.discount_denda
def before_save(self, bayar): # Override def before_save(self, bayar): # Override
......
# File ini berdasarkan Surat Keputusan Walikota Cilegon
# Nomor 973/kep. -BPKAD/2020
from datetime import date from datetime import date
from .default import ( from .default import (
Inquiry as BaseInquiry, Inquiry as BaseInquiry,
...@@ -9,15 +7,18 @@ from .default import ( ...@@ -9,15 +7,18 @@ from .default import (
from ..models.cilegon import PembayaranSppt from ..models.cilegon import PembayaranSppt
AWAL_DISC = date(2020, 9, 1) # SK WALIKOTA CILEGON
AKHIR_DISC = date(2020, 11, 30) # NOMOR 973/Kep.114-BPKAD/2022
# 19 SEPTEMBER 2022
AWAL_DISC = date(2022, 10, 1)
AKHIR_DISC = date(2022, 12, 31)
class Inquiry(BaseInquiry): class Inquiry(BaseInquiry):
def hitung_discount_denda(self): def hitung_discount_denda(self):
if self.tgl_bayar < AWAL_DISC or self.tgl_bayar > AKHIR_DISC or \ 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 < '1990' or \
self.invoice.thn_pajak_sppt > '2020': self.invoice.thn_pajak_sppt > '2022':
return 0 return 0
return self.denda return self.denda
......
from datetime import date from datetime import date
from sqlalchemy import func
from opensipkd.hitung import round_up
from ..models.kuningan import PembayaranSppt from ..models.kuningan import PembayaranSppt
from .base import ( from .base import get_db_session
get_db_session,
Query,
)
from .default import ( from .default import (
Inquiry as BaseInquiry, Inquiry as BaseInquiry,
Reversal as BaseReversal, Reversal as BaseReversal,
...@@ -11,7 +10,7 @@ from .default import ( ...@@ -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 # Discount pokok berdasarkan bulan
NILAI_DISC_POKOK = { NILAI_DISC_POKOK = {
...@@ -31,6 +30,25 @@ class Inquiry(BaseInquiry): ...@@ -31,6 +30,25 @@ class Inquiry(BaseInquiry):
def get_payment_model(self): # Override def get_payment_model(self): # Override
return PembayaranSppt 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 def hitung_discount(self): # Override
self.discount_pokok = self.discount_denda = 0 self.discount_pokok = self.discount_denda = 0
if self.invoice.thn_pajak_sppt >= '2009' \ if self.invoice.thn_pajak_sppt >= '2009' \
......
...@@ -6,13 +6,13 @@ from .cilegon import ( ...@@ -6,13 +6,13 @@ from .cilegon import (
) )
AKHIR_DISC = date(2020, 12, 31) AKHIR_DISC = date(2022, 12, 31)
class Inquiry(BaseInquiry): class Inquiry(BaseInquiry):
def hitung_discount_denda(self): def hitung_discount_denda(self):
if self.tgl_bayar > AKHIR_DISC or \ if self.tgl_bayar > AKHIR_DISC or \
self.invoice.thn_pajak_sppt < '2012' or \ self.invoice.thn_pajak_sppt < '2012' or \
self.invoice.thn_pajak_sppt > '2019': self.invoice.thn_pajak_sppt > '2022':
return 0 return 0
return self.denda return self.denda
...@@ -8,16 +8,8 @@ from .tangsel import ( ...@@ -8,16 +8,8 @@ from .tangsel import (
from ..models.tangsel import PembayaranSppt from ..models.tangsel import PembayaranSppt
AWAL_DISC = date(2021, 3, 22) AWAL_DISC = date(2022, 8, 17)
AKHIR_DISC = date(2021, 6, 30) AKHIR_DISC = date(2022, 8, 31)
TAHUN_PAJAK_DISC_POKOK = '2021'
BUKU_DISC_POKOK = [
(100000, 0),
(500000, 0.2),
(2000000, 0.15),
(5000000, 0.1),
(None, 0.05)]
class Inquiry(BaseInquiry): class Inquiry(BaseInquiry):
...@@ -27,21 +19,23 @@ class Inquiry(BaseInquiry): ...@@ -27,21 +19,23 @@ class Inquiry(BaseInquiry):
def hitung_discount(self): # Override def hitung_discount(self): # Override
self.denda_sblm_diskon = self.denda self.denda_sblm_diskon = self.denda
self.discount_denda = self.discount_pokok = 0 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: if self.tgl_bayar > AKHIR_DISC:
return 0 return
if self.tgl_bayar < AWAL_DISC: 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 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 return 0
for max_tagihan, disc in BUKU_DISC_POKOK: return self.denda
if max_tagihan is None:
break
if self.invoice.pbb_yg_harus_dibayar_sppt <= max_tagihan:
break
return int(disc * self.tagihan)
class AvailableInvoice(BaseAvailableInvoice): class AvailableInvoice(BaseAvailableInvoice):
......
...@@ -10,6 +10,10 @@ from .tasik_kab import ( ...@@ -10,6 +10,10 @@ from .tasik_kab import (
) )
AWAL_DISC = date(2022, 8, 19)
AKHIR_DISC = date(2022, 12, 31)
class Inquiry(BaseInquiry): class Inquiry(BaseInquiry):
def get_invoice_model(self): # Override def get_invoice_model(self): # Override
return Sppt return Sppt
...@@ -20,6 +24,9 @@ class Inquiry(BaseInquiry): ...@@ -20,6 +24,9 @@ class Inquiry(BaseInquiry):
def hitung_discount(self): # Override def hitung_discount(self): # Override
if self.invoice.denda_status == '1': if self.invoice.denda_status == '1':
self.discount = int(self.invoice.denda_pbb or 0) 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 def before_save(self, payment): # Override
payment.denda_sppt = self.denda - self.discount 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!