Commit 87bfecd7 by Owo Sugiana

Perubahan rumus Kota Bogor

1 parent 04f2ee6d
0.1.20 2021-01-28
-----------------
- Perubahan rumus Kota Bogor
0.1.19 2021-01-25 0.1.19 2021-01-25
----------------- -----------------
- Penambahan Kota Tasikmalaya - Penambahan Kota Tasikmalaya
......
from sqlalchemy import (
Column,
String,
Integer,
)
from .default import Base
from .tasik_kab import (
ObjekPajak,
Sppt,
PembayaranSppt,
Kelurahan,
Kecamatan,
Propinsi,
TempatPembayaran,
)
class PenguranganPst(Base):
__tablename__ = 'pengurangan_pst'
__table_args__ = dict(schema='pbb')
kd_kanwil = Column(String(2), primary_key=True)
kd_kantor = Column(String(2), primary_key=True)
thn_pelayanan = Column(String(4), primary_key=True)
bundel_pelayanan = Column(String(4), primary_key=True)
no_urut_pelayanan = Column(String(3), primary_key=True)
kd_propinsi_pemohon = Column(String(2), primary_key=True)
kd_dati2_pemohon = Column(String(2), primary_key=True)
kd_kecamatan_pemohon = Column(String(3), primary_key=True)
kd_kelurahan_pemohon = Column(String(3), primary_key=True)
kd_blok_pemohon = Column(String(3), primary_key=True)
no_urut_pemohon = Column(String(4), primary_key=True)
kd_jns_op_pemohon = Column(String(1), primary_key=True)
thn_peng_pst = Column(String(4), nullable=False)
jns_sk = Column(String(1), nullable=False)
no_sk = Column(String(30), nullable=False)
status_sk_peng_pst = Column(Integer, nullable=False)
pct_pengurangan_pst = Column(String(1), nullable=False)
...@@ -68,24 +68,3 @@ class PenguranganCovid(Base): ...@@ -68,24 +68,3 @@ class PenguranganCovid(Base):
# PembayaranSppt.kd_jns_op, PembayaranSppt.thn_pajak_sppt, # PembayaranSppt.kd_jns_op, PembayaranSppt.thn_pajak_sppt,
# PembayaranSppt.pembayaran_sppt_ke]), # PembayaranSppt.pembayaran_sppt_ke]),
# ) # )
class PenguranganPst(Base):
__tablename__ = 'pengurangan_pst'
kd_kanwil = Column(String(2), primary_key=True)
kd_kantor = Column(String(2), primary_key=True)
thn_pelayanan = Column(String(4), primary_key=True)
bundel_pelayanan = Column(String(4), primary_key=True)
no_urut_pelayanan = Column(String(3), primary_key=True)
kd_propinsi_pemohon = Column(String(2), primary_key=True)
kd_dati2_pemohon = Column(String(2), primary_key=True)
kd_kecamatan_pemohon = Column(String(3), primary_key=True)
kd_kelurahan_pemohon = Column(String(3), primary_key=True)
kd_blok_pemohon = Column(String(3), primary_key=True)
no_urut_pemohon = Column(String(4), primary_key=True)
kd_jns_op_pemohon = Column(String(1), primary_key=True)
thn_peng_pst = Column(String(4), nullable=False)
jns_sk = Column(String(1), nullable=False)
no_sk = Column(String(30), nullable=False)
status_sk_peng_pst = Column(Integer, nullable=False)
pct_pengurangan_pst = Column(String(1), nullable=False)
...@@ -4,10 +4,8 @@ from datetime import ( ...@@ -4,10 +4,8 @@ from datetime import (
datetime, datetime,
) )
from opensipkd.hitung import round_up from opensipkd.hitung import round_up
from ..models.default import ( from ..models.default import PenguranganCovid
PenguranganPst, from ..models.bogor_kota import PenguranganPst
PenguranganCovid,
)
from .base import ( from .base import (
get_db_session, get_db_session,
Query, Query,
...@@ -19,8 +17,11 @@ from .default import ( ...@@ -19,8 +17,11 @@ from .default import (
) )
OKTOBER_1 = date(2020, 10, 1) AWAL_DISC = date(2021, 2, 1)
DESEMBER_18 = date(2020, 12, 18) AKHIR_DISC = date(2021, 4, 30)
# Discount pokok berdasarkan bulan
NILAI_DISC = {2: 0.15, 3: 0.1, 4: 0.05}
class Common(Query): class Common(Query):
...@@ -38,28 +39,38 @@ class Common(Query): ...@@ -38,28 +39,38 @@ class Common(Query):
class Inquiry(BaseInquiry, Common): class Inquiry(BaseInquiry, Common):
# 01-10-2017 Perwal Kota Bogor penghapusan denda def is_pst(self):
def rumus_discount_denda_2017(self): DBSession = get_db_session()
if self.invoice.thn_pajak_sppt < '2013': inv_id = self.invoice_id
self.discount = self.denda q = DBSession.query(PenguranganPst).filter_by(
kd_propinsi_pemohon=inv_id['Propinsi'],
kd_dati2_pemohon=inv_id['Kabupaten'],
kd_kecamatan_pemohon=inv_id['Kecamatan'],
kd_kelurahan_pemohon=inv_id['Kelurahan'],
kd_blok_pemohon=inv_id['Blok'], no_urut_pemohon=inv_id['Urut'],
kd_jns_op_pemohon=inv_id['Jenis'],
thn_peng_pst=inv_id['Tahun'])
pst = q.first()
return pst and pst.no_sk and pst.status_sk_peng_pst != '2'
def rumus_discount_denda_2020_07_08(self): def hitung_discount_pokok(self):
if self.invoice.thn_pajak_sppt < '2020': potongan = NILAI_DISC[self.tgl_bayar.month]
self.discount = self.denda self.discount_pokok = potongan * self.tagihan
def rumus_discount_denda_2020_10_12(self): def hitung_discount_denda(self):
self.discount = self.denda self.discount_denda = self.denda
def hitung_discount(self): # Override def hitung_discount(self): # Override
if self.tgl_bayar >= OKTOBER_1 and self.tgl_bayar <= DESEMBER_18: self.discount_pokok = self.discount_denda = 0
self.rumus_discount_denda_2020_10_12() if self.tgl_bayar < AWAL_DISC or self.tgl_bayar > AKHIR_DISC:
elif self.tgl_bayar.year == 2020 and self.tgl_bayar.month in (7, 8): return
self.rumus_discount_denda_2020_07_08() if not self.is_pst():
else: self.hitung_discount_pokok()
self.rumus_discount_denda_2017() self.hitung_discount_denda()
self.discount = self.discount_pokok + self.discount_denda
def before_save(self, bayar): # Override def before_save(self, bayar): # Override
if not self.discount: if not self.discount_pokok and not self.discount_denda:
return return
inv = self.invoice inv = self.invoice
pc = PenguranganCovid( pc = PenguranganCovid(
...@@ -70,7 +81,7 @@ class Inquiry(BaseInquiry, Common): ...@@ -70,7 +81,7 @@ class Inquiry(BaseInquiry, Common):
kd_jns_op=bayar.kd_jns_op, thn_pajak_sppt=bayar.thn_pajak_sppt, kd_jns_op=bayar.kd_jns_op, thn_pajak_sppt=bayar.thn_pajak_sppt,
pembayaran_sppt_ke=bayar.pembayaran_sppt_ke, pembayaran_sppt_ke=bayar.pembayaran_sppt_ke,
bayar=self.discount, bayar=self.discount,
denda=self.discount) denda=self.discount_denda)
DBSession = get_db_session() DBSession = get_db_session()
DBSession.add(pc) DBSession.add(pc)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!