Commit 382bfd24 by Owo Sugiana

Penggunaan tabel denda_adm_sppt di Kabupaten Serang

1 parent 11c4a85d
0.1.51 2023-02-23
-----------------
- Di Kabupaten Serang denda dikurangi dengan tabel denda_adm_sppt
0.1.50 2023-01-31 0.1.50 2023-01-31
----------------- -----------------
- Discount Kabupaten Subang - Discount Kabupaten Subang
......
...@@ -15,7 +15,7 @@ line = CHANGES.splitlines()[0] ...@@ -15,7 +15,7 @@ line = CHANGES.splitlines()[0]
version = line.split()[0] version = line.split()[0]
requires = [ requires = [
'sqlalchemy < 1.4', 'sqlalchemy < 2',
'transaction', 'transaction',
'zope.sqlalchemy', 'zope.sqlalchemy',
'psycopg2-binary', 'psycopg2-binary',
......
...@@ -2,6 +2,7 @@ from sqlalchemy import ( ...@@ -2,6 +2,7 @@ from sqlalchemy import (
Column, Column,
Float, Float,
String, String,
ForeignKeyConstraint,
) )
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from .objek_pajak import BaseObjekPajakMixin from .objek_pajak import BaseObjekPajakMixin
...@@ -25,6 +26,32 @@ class Sppt(Base, BaseSpptMixin): ...@@ -25,6 +26,32 @@ class Sppt(Base, BaseSpptMixin):
pbb_yg_hrs_dibayar_sppt = Column(Float) pbb_yg_hrs_dibayar_sppt = Column(Float)
class DendaAdm(Base):
__tablename__ = 'denda_adm_sppt'
kd_propinsi = Column(String(2), primary_key=True)
kd_dati2 = Column(String(2), primary_key=True)
kd_dinas = Column(String(2), primary_key=True)
kd_kppd = Column(String(2), primary_key=True)
no_pelayanan = Column(String(11), 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_pajak_permohonan = Column(String(4), primary_key=True)
jml_pokok_denda = Column(Float, nullable=False)
jml_pengurangan_denda = Column(Float)
__table_args__ = (
ForeignKeyConstraint([
kd_propinsi, kd_dati2, kd_kecamatan_pemohon, kd_kelurahan_pemohon,
kd_blok_pemohon, no_urut_pemohon, kd_jns_op_pemohon,
thn_pajak_permohonan],
[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]),
dict(schema='iprotaxpbb'))
class PembayaranSppt(Base, BasePembayaranSpptMixin): class PembayaranSppt(Base, BasePembayaranSpptMixin):
__table_args__ = dict(schema='iprotaxpbb') __table_args__ = dict(schema='iprotaxpbb')
jml_denda_sppt = Column(Float) jml_denda_sppt = Column(Float)
......
...@@ -168,7 +168,7 @@ def main(argv=sys.argv): ...@@ -168,7 +168,7 @@ def main(argv=sys.argv):
invoice_id, persen_denda, tgl_bayar=tgl_bayar, debug=True) invoice_id, persen_denda, tgl_bayar=tgl_bayar, debug=True)
if not inq.invoice: if not inq.invoice:
print('Invoice ID {} tidak ada.'.format(invoice_id)) print('Invoice ID {} tidak ada.'.format(invoice_id))
if inq.debug_invoice: if inq.debug_invoice and tgl_bayar:
if tgl_bayar.year < int(inq.debug_invoice.thn_pajak_sppt): if tgl_bayar.year < int(inq.debug_invoice.thn_pajak_sppt):
print('Ada tapi tahun pajak lebih besar dari tahun ' print('Ada tapi tahun pajak lebih besar dari tahun '
'tanggal bayar') 'tanggal bayar')
......
from logging import getLogger
from datetime import datetime from datetime import datetime
from sqlalchemy import func from sqlalchemy import func
from opensipkd.hitung import round_up from opensipkd.hitung import round_up
...@@ -8,16 +9,22 @@ from ..models.serang_kab import ( ...@@ -8,16 +9,22 @@ from ..models.serang_kab import (
Kelurahan, Kelurahan,
Kecamatan, Kecamatan,
Propinsi, Propinsi,
DendaAdm,
) )
from .base import ( from .base import (
AvailableInvoice as BaseAvailableInvoice, AvailableInvoice as BaseAvailableInvoice,
Inquiry as BaseInquiry, Inquiry as BaseInquiry,
Reversal as BaseReversal, Reversal as BaseReversal,
get_db_session, get_db_session,
get_id,
) )
class Inquiry(BaseInquiry): class Inquiry(BaseInquiry):
def is_available(self): # Override
if self.invoice.thn_pajak_sppt < '2023':
return super().is_available()
def hitung_pokok(self): # Override def hitung_pokok(self): # Override
DBSession = get_db_session() DBSession = get_db_session()
Payment = self.get_payment_model() Payment = self.get_payment_model()
...@@ -37,6 +44,34 @@ class Inquiry(BaseInquiry): ...@@ -37,6 +44,34 @@ class Inquiry(BaseInquiry):
else: else:
self.tagihan = round_up(tagihan) self.tagihan = round_up(tagihan)
def hitung_denda(self): # Override
super().hitung_denda()
if self.denda < 1:
return
inv = self.invoice
DBSession = get_db_session()
q = DBSession.query(DendaAdm).filter_by(
kd_propinsi=inv.kd_propinsi, kd_dati2=inv.kd_dati2,
kd_kecamatan_pemohon=inv.kd_kecamatan,
kd_kelurahan_pemohon=inv.kd_kelurahan,
kd_blok_pemohon=inv.kd_blok, no_urut_pemohon=inv.no_urut,
kd_jns_op_pemohon=inv.kd_jns_op,
thn_pajak_permohonan=inv.thn_pajak_sppt)
adm = q.first()
if not adm:
return
d = self.denda - (adm.jml_pengurangan_denda or 0)
if d <= 0:
d = 0
else:
d = round_up(d)
log = getLogger('hitung_denda()')
inv_id = get_id(inv)
msg = f'Invoice ID {inv_id} denda = denda waktu {self.denda} - '\
f'denda administrasi {adm.jml_pokok_denda} = {d}'
self.denda = d
log.info(msg)
def do_payment(self, bank_fields, user_id, ntp=None, ntb=None): # Override def do_payment(self, bank_fields, user_id, ntp=None, ntb=None): # Override
DBSession = get_db_session() DBSession = get_db_session()
Payment = self.get_payment_model() Payment = self.get_payment_model()
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!