Commit 420ae25c by Owo Sugiana

Tambah Kota Sukabumi

1 parent 4ed94e5c
0.2.0 2023-03-22
----------------
- Tambah Kota Sukabumi
0.1.51 2023-02-23 0.1.51 2023-02-23
----------------- -----------------
- Di Kabupaten Serang denda dikurangi dengan tabel denda_adm_sppt - Di Kabupaten Serang denda dikurangi dengan tabel denda_adm_sppt
......
from sqlalchemy import (
Column,
String,
Integer,
Float,
DateTime,
ForeignKey,
ForeignKeyConstraint,
)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Propinsi(Base):
__tablename__ = 'REF_PROPINSI'
KD_PROPINSI = Column(String(2), primary_key=True)
NM_PROPINSI = Column(String(30))
class Kabupaten(Base):
__tablename__ = 'REF_DATI2'
KD_PROPINSI = Column(
String(2), ForeignKey(Propinsi.KD_PROPINSI), primary_key=True)
KD_DATI2 = Column(String(2), primary_key=True)
NM_DATI2 = Column(String(30))
class Kecamatan(Base):
__tablename__ = 'REF_KECAMATAN'
KD_PROPINSI = Column(String(2), primary_key=True)
KD_DATI2 = Column(String(2), primary_key=True)
KD_KECAMATAN = Column(String(3), primary_key=True)
NM_KECAMATAN = Column(String(30))
__table_args__ = (
ForeignKeyConstraint([
KD_PROPINSI, KD_DATI2], [
Kabupaten.KD_PROPINSI, Kabupaten.KD_DATI2]),)
class Kelurahan(Base):
__tablename__ = 'REF_KELURAHAN'
KD_PROPINSI = Column(String(2), primary_key=True)
KD_DATI2 = Column(String(2), primary_key=True)
KD_KECAMATAN = Column(String(3), primary_key=True)
KD_KELURAHAN = Column(String(3), primary_key=True)
KD_SEKTOR = Column(String(2))
NM_KELURAHAN = Column(String(30))
NO_KELURAHAN = Column(Float)
KD_POS_KELURAHAN = Column(String(5))
__table_args__ = (
ForeignKeyConstraint([
KD_PROPINSI, KD_DATI2, KD_KECAMATAN], [
Kecamatan.KD_PROPINSI, Kecamatan.KD_DATI2,
Kecamatan.KD_KECAMATAN]),)
class Objek(Base):
__tablename__ = 'DAT_OBJEK_PAJAK'
KD_PROPINSI = Column(String(2), primary_key=True)
KD_DATI2 = Column(String(2), primary_key=True)
KD_KECAMATAN = Column(String(3), primary_key=True)
KD_KELURAHAN = Column(String(3), primary_key=True)
KD_BLOK = Column(String(3), primary_key=True)
NO_URUT = Column(String(4), primary_key=True)
KD_JNS_OP = Column(String(1), primary_key=True)
SUBJEK_PAJAK_ID = Column(String(30))
NO_FORMULIR_SPOP = Column(String(11))
NO_PERSIL = Column(String(5))
JALAN_OP = Column(String(30))
BLOK_KAV_NO_OP = Column(String(15))
RW_OP = Column(String(2))
RT_OP = Column(String(3))
KD_STATUS_CABANG = Column(Float)
KD_STATUS_WP = Column(String(1))
TOTAL_LUAS_BUMI = Column(Float)
TOTAL_LUAS_BNG = Column(Float)
NJOP_BUMI = Column(Float)
NJOP_BNG = Column(Float)
STATUS_PETA_OP = Column(Float)
JNS_TRANSAKSI_OP = Column(String(1))
TGL_PENDATAAN_OP = Column(DateTime)
NIP_PENDATA = Column(String(9))
TGL_PEMERIKSAAN_OP = Column(DateTime)
NIP_PEMERIKSA_OP = Column(String(9))
TGL_PEREKAMAN_OP = Column(DateTime)
NIP_PEREKAM_OP = Column(String(9))
STATUS_WP = Column(Integer, nullable=False)
STATUS_PROSES = Column(Integer, nullable=False)
THN_PENILAIAN = Column(Integer, nullable=False)
class Sppt(Base):
__tablename__ = 'SPPT'
KD_PROPINSI = Column(String(2), primary_key=True)
KD_DATI2 = Column(String(2), primary_key=True)
KD_KECAMATAN = Column(String(3), primary_key=True)
KD_KELURAHAN = Column(String(3), primary_key=True)
KD_BLOK = Column(String(3), primary_key=True)
NO_URUT = Column(String(4), primary_key=True)
KD_JNS_OP = Column(String(1), primary_key=True)
THN_PAJAK_SPPT = Column(String(4), primary_key=True)
SIKLUS_SPPT = Column(Float)
KD_KANWIL_BANK = Column(String(2))
KD_KPPBB_BANK = Column(String(2))
KD_BANK_TUNGGAL = Column(String(2))
KD_BANK_PERSEPSI = Column(String(2))
KD_TP = Column(String(2))
NM_WP_SPPT = Column(String(30))
JLN_WP_SPPT = Column(String(30))
BLOK_KAV_NO_WP_SPPT = Column(String(15))
RW_WP_SPPT = Column(String(2))
RT_WP_SPPT = Column(String(3))
KELURAHAN_WP_SPPT = Column(String(30))
KOTA_WP_SPPT = Column(String(30))
KD_POS_WP_SPPT = Column(String(5))
NPWP_SPPT = Column(String(15))
NO_PERSIL_SPPT = Column(String(5))
KD_KLS_TANAH = Column(String(3))
THN_AWAL_KLS_TANAH = Column(String(4))
KD_KLS_BNG = Column(String(3))
THN_AWAL_KLS_BNG = Column(String(4))
TGL_JATUH_TEMPO_SPPT = Column(DateTime)
LUAS_BUMI_SPPT = Column(Float)
LUAS_BNG_SPPT = Column(Float)
NJOP_BUMI_SPPT = Column(Float)
NJOP_BNG_SPPT = Column(Float)
NJOP_SPPT = Column(Float)
NJOPTKP_SPPT = Column(Float)
NJKP_SPPT = Column(Float)
PBB_TERHUTANG_SPPT = Column(Float)
FAKTOR_PENGURANG_SPPT = Column(Float)
PBB_YG_HARUS_DIBAYAR_SPPT = Column(Float)
STATUS_PEMBAYARAN_SPPT = Column(String(1))
STATUS_TAGIHAN_SPPT = Column(String(1))
STATUS_CETAK_SPPT = Column(String(1))
TGL_TERBIT_SPPT = Column(DateTime)
TGL_CETAK_SPPT = Column(DateTime)
NIP_PENCETAK_SPPT = Column(String(9))
STATUS_WP = Column(Integer, nullable=False)
STATUS_PENYEBARAN = Column(Integer)
STATUS_BUKTI_BAYAR = Column(Integer)
TGL_UPDATE_BUKTI = Column(DateTime)
__table_args__ = (
ForeignKeyConstraint([
KD_PROPINSI, KD_DATI2, KD_KECAMATAN, KD_KELURAHAN, KD_BLOK,
NO_URUT, KD_JNS_OP], [
Objek.KD_PROPINSI, Objek.KD_DATI2, Objek.KD_KECAMATAN,
Objek.KD_KELURAHAN, Objek.KD_BLOK, Objek.NO_URUT,
Objek.KD_JNS_OP]),)
class PembayaranSppt(Base):
__tablename__ = 'PEMBAYARAN_SPPT'
KD_PROPINSI = Column(String(2), primary_key=True)
KD_DATI2 = Column(String(2), primary_key=True)
KD_KECAMATAN = Column(String(3), primary_key=True)
KD_KELURAHAN = Column(String(3), primary_key=True)
KD_BLOK = Column(String(3), primary_key=True)
NO_URUT = Column(String(4), primary_key=True)
KD_JNS_OP = Column(String(1), primary_key=True)
THN_PAJAK_SPPT = Column(String(4), primary_key=True)
PEMBAYARAN_SPPT_KE = Column(Float, primary_key=True)
KD_KANWIL_BANK = Column(String(2), nullable=False)
KD_KPPBB_BANK = Column(String(2), nullable=False)
KD_BANK_TUNGGAL = Column(String(2), nullable=False)
KD_BANK_PERSEPSI = Column(String(2), nullable=False)
KD_TP = Column(String(2), nullable=False)
DENDA_SPPT = Column(Float)
JML_SPPT_YG_DIBAYAR = Column(Float)
TGL_PEMBAYARAN_SPPT = Column(DateTime)
TGL_REKAM_BYR_SPPT = Column(DateTime)
NIP_REKAM_BYR_SPPT = Column(String(9))
__table_args__ = (
ForeignKeyConstraint([
KD_PROPINSI, KD_DATI2, KD_KECAMATAN, KD_KELURAHAN, KD_BLOK,
NO_URUT, KD_JNS_OP, THN_PAJAK_SPPT], [
Sppt.KD_PROPINSI, Sppt.KD_DATI2, Sppt.KD_KECAMATAN,
Sppt.KD_KELURAHAN, Sppt.KD_BLOK, Sppt.NO_URUT, Sppt.KD_JNS_OP,
Sppt.THN_PAJAK_SPPT]),)
...@@ -17,10 +17,6 @@ from opensipkd.hitung import ( ...@@ -17,10 +17,6 @@ from opensipkd.hitung import (
DBSession = None DBSession = None
def get_db_session():
return DBSession
if sys.platform == 'linux': if sys.platform == 'linux':
localization = 'id_ID.utf8' localization = 'id_ID.utf8'
else: else:
...@@ -66,7 +62,7 @@ class Query: ...@@ -66,7 +62,7 @@ class Query:
self.invoice_id = FixLength(INVOICE_ID) self.invoice_id = FixLength(INVOICE_ID)
if invoice: if invoice:
self.invoice = invoice self.invoice = invoice
self.invoice_id_raw = get_id(invoice) self.invoice_id_raw = self.get_id()
self.invoice_id.set_raw(self.invoice_id_raw) self.invoice_id.set_raw(self.invoice_id_raw)
else: else:
self.invoice_id_raw = invoice_id self.invoice_id_raw = invoice_id
...@@ -74,6 +70,9 @@ class Query: ...@@ -74,6 +70,9 @@ class Query:
q = self.query_invoice() q = self.query_invoice()
self.invoice = q.first() self.invoice = q.first()
def get_id(self):
return get_id(self.invoice)
def get_op_model(self): # Objek Pajak def get_op_model(self): # Objek Pajak
pass pass
...@@ -92,10 +91,12 @@ class Query: ...@@ -92,10 +91,12 @@ class Query:
kd_blok=inv_id['Blok'], no_urut=inv_id['Urut'], kd_blok=inv_id['Blok'], no_urut=inv_id['Urut'],
kd_jns_op=inv_id['Jenis']) kd_jns_op=inv_id['Jenis'])
def get_filter_tahun(self, q):
return q.filter_by(thn_pajak_sppt=self.invoice_id['Tahun'])
def get_filter(self, q): def get_filter(self, q):
inv_id = self.invoice_id
q = self.get_filter_op(q) q = self.get_filter_op(q)
return q.filter_by(thn_pajak_sppt=inv_id['Tahun']) return self.get_filter_tahun(q)
def get_query(self, model): def get_query(self, model):
q = DBSession.query(model) q = DBSession.query(model)
...@@ -240,22 +241,28 @@ class Inquiry(Query): ...@@ -240,22 +241,28 @@ class Inquiry(Query):
def is_paid(self): def is_paid(self):
return self.total < 1 return self.total < 1
def hitung_pokok(self): def get_payment_sum(self):
Payment = self.get_payment_model() Payment = self.get_payment_model()
q = DBSession.query( return DBSession.query(
func.sum(Payment.jml_sppt_yg_dibayar). func.sum(Payment.jml_sppt_yg_dibayar).
label('jml_sppt_yg_dibayar'), label('jml_sppt_yg_dibayar'),
func.sum(Payment.denda_sppt). func.sum(Payment.denda_sppt).
label('denda_sppt'), label('denda_sppt'),
func.sum(Payment.discount). func.sum(Payment.discount).
label('discount')) label('discount'))
def get_tagihan_pokok(self):
return self.invoice.pbb_yg_harus_dibayar_sppt
def hitung_pokok(self):
q = self.get_payment_sum()
q = self.get_filter(q) q = self.get_filter(q)
bayar = q.first() bayar = q.first()
self.total_bayar = bayar.jml_sppt_yg_dibayar or 0 self.total_bayar = bayar.jml_sppt_yg_dibayar or 0
denda_lalu = bayar.denda_sppt or 0 denda_lalu = bayar.denda_sppt or 0
discount_lalu = float(bayar.discount or 0) discount_lalu = float(bayar.discount or 0)
sisa = float(self.total_bayar - denda_lalu) sisa = float(self.total_bayar - denda_lalu)
tagihan = self.invoice.pbb_yg_harus_dibayar_sppt - sisa - discount_lalu tagihan = self.get_tagihan_pokok() - sisa - discount_lalu
if tagihan < 0: if tagihan < 0:
self.tagihan = 0 self.tagihan = 0
else: else:
...@@ -267,7 +274,7 @@ class Inquiry(Query): ...@@ -267,7 +274,7 @@ class Inquiry(Query):
else: else:
tgl_bayar = self.tgl_bayar tgl_bayar = self.tgl_bayar
self.bln_tunggakan, denda = hitung_denda( self.bln_tunggakan, denda = hitung_denda(
self.tagihan, self.invoice.tgl_jatuh_tempo_sppt, self.persen_denda, self.tagihan, self.get_jatuh_tempo(), self.persen_denda,
tgl_bayar) tgl_bayar)
self.denda = round_up(denda) self.denda = round_up(denda)
...@@ -368,6 +375,7 @@ class AvailableInvoice(Query): ...@@ -368,6 +375,7 @@ class AvailableInvoice(Query):
def get_filter(self, q): def get_filter(self, q):
Invoice = self.get_invoice_model() Invoice = self.get_invoice_model()
q = q.filter_by(status_pembayaran_sppt='0')
if self.option.tahun: if self.option.tahun:
q = q.filter_by(thn_pajak_sppt=self.option.tahun) q = q.filter_by(thn_pajak_sppt=self.option.tahun)
if self.option.min_nominal: if self.option.min_nominal:
...@@ -391,8 +399,7 @@ class AvailableInvoice(Query): ...@@ -391,8 +399,7 @@ class AvailableInvoice(Query):
if durasi > 10: if durasi > 10:
break break
offset += 1 offset += 1
q = DBSession.query(Invoice).filter_by(status_pembayaran_sppt='0') q = self.get_query(Invoice)
q = self.get_filter(q)
q = q.offset(offset).limit(1) q = q.offset(offset).limit(1)
inv = q.first() inv = q.first()
if not inv: if not inv:
......
from sqlalchemy import func
from ..models.sukabumi_kota import (
Objek,
Sppt,
PembayaranSppt,
Kelurahan,
Kecamatan,
Propinsi,
)
from .default import (
AvailableInvoice as BaseAvailableInvoice,
Inquiry as BaseInquiry,
Reversal as BaseReversal,
)
from .base import get_db_session
def get_nop(row):
return ''.join(
[row.KD_PROPINSI, row.KD_DATI2, row.KD_KECAMATAN,
row.KD_KELURAHAN, row.KD_BLOK, row.NO_URUT, row.KD_JNS_OP])
def get_id(row):
return ''.join([get_nop(row), row.THN_PAJAK_SPPT])
class Inquiry(BaseInquiry):
def get_id(self): # Override
return get_id(self.invoice)
def is_available(self): # Override
if int(self.invoice.THN_PAJAK_SPPT) > self.tgl_bayar.year:
return
return self.invoice.STATUS_PEMBAYARAN_SPPT in ('0', '1')
def get_payment_sum(self): # Override
Payment = self.get_payment_model()
DBSession = get_db_session()
return DBSession.query(
func.sum(Payment.JML_SPPT_YG_DIBAYAR).
label('jml_sppt_yg_dibayar'),
func.sum(Payment.DENDA_SPPT).
label('denda_sppt'),
func.sum(0).
label('discount'))
def get_tagihan_pokok(self): # Override
return self.invoice.PBB_YG_HARUS_DIBAYAR_SPPT
def get_jatuh_tempo(self): # Override
return self.invoice.TGL_JATUH_TEMPO_SPPT
def get_tahun(self): # Override
return self.invoice.THN_PAJAK_SPPT
def get_luas_tanah(self): # Override
return self.invoice.LUAS_BUMI_SPPT
def get_luas_bangunan(self): # Override
return self.invoice.LUAS_BNG_SPPT
def get_status_pembayaran(self): # Override
return self.invoice.STATUS_PEMBAYARAN_SPPT
def get_kelurahan_op(self): # Override
DBSession = get_db_session()
Kelurahan = self.get_kelurahan_model()
inv_id = self.invoice_id
q = DBSession.query(Kelurahan).filter_by(
KD_PROPINSI=inv_id['Propinsi'], KD_DATI2=inv_id['Kabupaten'],
KD_KECAMATAN=inv_id['Kecamatan'],
KD_KELURAHAN=inv_id['Kelurahan'])
r = q.first()
return r and r.NM_KELURAHAN or ''
def get_kecamatan_op(self): # Override
DBSession = get_db_session()
Kecamatan = self.get_kecamatan_model()
inv_id = self.invoice_id
q = DBSession.query(Kecamatan).filter_by(
KD_PROPINSI=inv_id['Propinsi'], KD_DATI2=inv_id['Kabupaten'],
KD_KECAMATAN=inv_id['Kecamatan'])
r = q.first()
return r and r.NM_KECAMATAN or ''
def get_propinsi_op(self): # Override
DBSession = get_db_session()
Propinsi = self.get_propinsi_model()
q = DBSession.query(Propinsi).filter_by(
KD_PROPINSI=self.invoice_id['Propinsi'])
r = q.first()
return r and r.NM_PROPINSI or ''
def get_alamat_op(self): # Override
return self.invoice.JLN_WP_SPPT
'''
# Permission denied
q = self.query_op()
op = q.first()
if not op:
return self.invoice.JLN_WP_SPPT
s = [op.JALAN_OP]
no = op.BLOK_KAV_NO_OP or ''
no = no.strip()
if no:
s.append(no)
rt = op.RT_OP or ''
rt = rt.strip()
rw = op.RW_OP or ''
rw = rw.strip()
if rt:
if rw:
rt += f'/{rw}'
s.append(f'RT {rt}')
elif rw:
s.append(f'RW {rw}')
return ','.join(s)
'''
def get_nama_wp(self): # Override
return self.invoice.NM_WP_SPPT
def get_filter_op(self, q): # Override
inv_id = self.invoice_id
return q.filter_by(
KD_PROPINSI=inv_id['Propinsi'], KD_DATI2=inv_id['Kabupaten'],
KD_KECAMATAN=inv_id['Kecamatan'],
KD_KELURAHAN=inv_id['Kelurahan'],
KD_BLOK=inv_id['Blok'], NO_URUT=inv_id['Urut'],
KD_JNS_OP=inv_id['Jenis'])
def get_filter_tahun(self, q): # Override
return q.filter_by(THN_PAJAK_SPPT=self.invoice_id['Tahun'])
def query_payments(self): # Override
Payment = self.get_payment_model()
q = self.query_payment()
return q.order_by(Payment.PEMBAYARAN_SPPT_KE.desc())
def get_op_model(self): # Override
return Objek
def get_invoice_model(self): # Override
return Sppt
def get_payment_model(self): # Override
return PembayaranSppt
def get_kelurahan_model(self): # Override
return Kelurahan
def get_kecamatan_model(self): # Override
return Kecamatan
def get_propinsi_model(self): # Override
return Propinsi
class Reversal(BaseReversal):
def get_invoice_model(self): # Override
return Sppt
def get_payment_model(self): # Override
return PembayaranSppt
class AvailableInvoice(BaseAvailableInvoice):
def get_inquiry_class(self): # Override
return Inquiry
def get_invoice_model(self): # Override
return Sppt
def get_payment_model(self): # Override
return PembayaranSppt
def get_filter(self, q): # Override
Invoice = self.get_invoice_model()
q = q.filter_by(STATUS_PEMBAYARAN_SPPT='0')
if self.option.tahun:
q = q.filter_by(THN_PAJAK_SPPT=self.option.tahun)
if self.option.min_nominal:
q = q.filter(
Invoice.PBB_YG_HARUS_DIBAYAR_SPPT >=
self.option.min_nominal)
if self.option.max_nominal:
q = q.filter(
Invoice.PBB_YG_HARUS_DIBAYAR_SPPT <=
self.option.max_nominal)
return q
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!