Commit ccfc7a09 by Owo Sugiana

Tambah Kota Sukabumi

1 parent bed79833
0.4.2 2022-2-26
---------------
- Tambah Kota Sukabumi
0.4.1 2021-12-31 0.4.1 2021-12-31
---------------- ----------------
- Penggunaan pkgutil agar lebih fleksibel saat pip install -e - Penggunaan pkgutil agar lebih fleksibel saat pip install -e
......
from sqlalchemy import (
Column,
String,
Integer,
Float,
DateTime,
Date,
ForeignKey,
)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Invoice(Base):
__tablename__ = 'tagihan_bphtb'
id = Column(Integer, primary_key=True)
no_tagihan = Column(String(10), nullable=False)
no_dokumen = Column(String(15), nullable=False)
user_entry = Column(Integer, nullable=False)
tahun_pajak = Column(Integer)
nama_wp = Column(String(150), nullable=False)
npwp_wp = Column(String(100))
ktp_wp = Column(String(50), nullable=False)
alamat_wp = Column(String(255))
kelurahan_wp = Column(String(100))
rt_wp = Column(String(4))
rw_wp = Column(String(4))
kecamatan_wp = Column(String(100))
kota_wp = Column(String(100))
kode_pos_wp = Column(String(6))
luas_bangunan_sppt = Column(Float)
luas_tanah_sppt = Column(Float)
njop_tanah_sppt = Column(Float)
njop_bangunan_sppt = Column(Float)
njop_sppt = Column(String(100))
nilai_pasar = Column(Float)
npop = Column(Float)
njoptkp = Column(Float)
npopkp = Column(Float)
bphtb_hrs_bayar = Column(Float)
status_pembayaran = Column(Integer)
tgl_terbit = Column(DateTime)
jml_cetak = Column(Integer)
cuser = Column(Integer)
cdate = Column(DateTime)
muser = Column(Integer)
mdate = Column(Date)
nop_baru = Column(String(100))
tgl_validasi = Column(DateTime)
user_validasi = Column(Integer)
luas_bangunan = Column(Float)
luas_tanah = Column(Float)
jns_perolehan_hak = Column(String(100))
nama_notaris = Column(String(100))
nama_wajib_pajak = Column(String(100))
kelurahan_op = Column(String(100))
kecamatan_op = Column(String(100))
alamat_op = Column(String(100))
jumlah_denda = Column(Float)
tgl_bayar = Column(Date)
id_sspd = Column(Integer, nullable=False)
nop = Column(String(100))
class Payment(Base):
__tablename__ = 'pembayaran_bphtb'
id = Column(Integer, primary_key=True)
id_tagihan = Column(Integer, ForeignKey(Invoice.id))
jumlah_yg_dibayar = Column(Float)
tgl_pembayaran = Column(DateTime(timezone=False))
tgl_rekam = Column(DateTime(timezone=False))
...@@ -11,6 +11,8 @@ def get_option(argv): ...@@ -11,6 +11,8 @@ def get_option(argv):
help_count = 'default {}'.format(default_count) help_count = 'default {}'.format(default_count)
pars = ArgumentParser() pars = ArgumentParser()
pars.add_argument('conf') pars.add_argument('conf')
pars.add_argument('--min-nominal', type=int)
pars.add_argument('--max-nominal', type=int)
pars.add_argument('--tahun', type=int) pars.add_argument('--tahun', type=int)
pars.add_argument('--skpdkb', action='store_true', help=help_skpdkb) pars.add_argument('--skpdkb', action='store_true', help=help_skpdkb)
pars.add_argument('--belum-jatuh-tempo', action='store_true') pars.add_argument('--belum-jatuh-tempo', action='store_true')
......
...@@ -62,6 +62,9 @@ def show_payment(pay): ...@@ -62,6 +62,9 @@ def show_payment(pay):
pay, ['nop', 'ntpd', 'pembayaran_bphtb_ke', 'bphtb_dibayar', pay, ['nop', 'ntpd', 'pembayaran_bphtb_ke', 'bphtb_dibayar',
'tgl_pembayaran_bphtb', 'nip_rekam_byr', 'reversal', 'tgl_pembayaran_bphtb', 'nip_rekam_byr', 'reversal',
'tanggal_reversal']) 'tanggal_reversal'])
# Kota Sukabumi
show_fields(
pay, ['jumlah_yg_dibayar', 'tgl_pembayaran', 'tgl_rekam'])
def show_inquiry(inq): def show_inquiry(inq):
...@@ -92,7 +95,8 @@ def show_inquiry(inq): ...@@ -92,7 +95,8 @@ def show_inquiry(inq):
show_val('Kode Pos Wajib Pajak', inq.get_kode_pos_wp()) show_val('Kode Pos Wajib Pajak', inq.get_kode_pos_wp())
show_val('Kota Wajib Pajak', inq.get_kota_wp()) show_val('Kota Wajib Pajak', inq.get_kota_wp())
show_val('Tahun Pajak', inq.get_tahun()) show_val('Tahun Pajak', inq.get_tahun())
show_val('Is Available', inq.is_available()) print('Tabel {}:'.format(inq.invoice.__table__.name))
show_fields(inq.invoice, ['status_pembayaran'])
show_payment_from_inquiry(inq) show_payment_from_inquiry(inq)
......
from datetime import (
datetime,
date,
)
from sqlalchemy.sql import func
from opensipkd.hitung import round_up
from opensipkd.string.money import thousand
from ..models.sukabumi_kota import (
Invoice,
Payment,
)
from .base import (
get_db_session,
AvailableInvoice as BaseAvailableInvoice,
)
class Common:
def __init__(self, invoice_id):
self.invoice_id = invoice_id
db_session = get_db_session()
q = db_session.query(Invoice).filter_by(no_tagihan=invoice_id)
self.invoice = q.first()
if not self.is_available():
self.invoice = None
def is_available(self):
return self.invoice.status_pembayaran in (0, 1)
def get_payment(self):
db_session = get_db_session()
q = db_session.query(Payment).filter_by(id_tagihan=self.invoice.id)
q = q.order_by(Payment.id.desc())
return q.first()
class Inquiry(Common):
def __init__(self, invoice_id, conf=dict(), tgl_bayar=None):
super().__init__(invoice_id)
if not self.invoice:
return
self.conf = conf
self.tgl_bayar = tgl_bayar or date.today()
self.hitung()
def hitung(self):
self.discount = 0
self.tagihan = self.invoice.bphtb_hrs_bayar
db_session = get_db_session()
q = db_session.query(
func.sum(Payment.jumlah_yg_dibayar)).filter(
Payment.id_tagihan == self.invoice.id)
self.total_bayar = q.scalar() or 0
if self.total_bayar:
self.tagihan -= self.total_bayar
self.tagihan = round_up(self.tagihan)
self.denda = self.invoice.jumlah_denda and \
round_up(self.invoice.jumlah_denda) or 0
self.total = self.tagihan + self.denda
def do_payment(self, ntb=None):
db_session = get_db_session()
pay = Payment(
id_tagihan=self.invoice.id,
jumlah_yg_dibayar=self.total,
tgl_pembayaran=self.tgl_bayar,
tgl_rekam=datetime.now())
db_session.add(pay)
self.invoice.status_pembayaran = 1
db_session.add(self.invoice)
return pay
def get_notaris(self):
return self.invoice.nama_notaris
def get_nop(self):
return self.invoice.nop
def get_luas_tanah(self):
return int(self.invoice.luas_tanah)
def get_luas_bangunan(self):
return int(self.invoice.luas_bangunan)
def get_npop(self):
return int(self.invoice.npop)
def get_jenis_perolehan_hak(self):
return self.invoice.jns_perolehan_hak
def get_nama_notaris(self):
return self.invoice.nama_notaris
def get_nama(self):
return self.invoice.nama_wajib_pajak
def get_npwp(self):
return self.invoice.npwp_wp
def get_alamat_wp(self):
return self.invoice.alamat_wp
def get_alamat_op(self):
return self.invoice.alamat_op
def get_kota_wp(self):
return self.invoice.kota_wp
def get_kota_op(self):
return 'KOTA SUKABUMI'
def get_kelurahan_wp(self):
return self.invoice.kelurahan_wp
def get_kecamatan_wp(self):
return self.invoice.kecamatan_wp
def get_rt_wp(self):
return self.invoice.rt_wp
def get_rw_wp(self):
return self.invoice.rw_wp
def get_kode_pos_wp(self):
return self.invoice.kode_pos_wp
def get_kelurahan_op(self):
return self.invoice.kelurahan_op
def get_kecamatan_op(self):
return self.invoice.kecamatan_op
def get_tahun(self):
return self.invoice.tahun_pajak
def get_jatuh_tempo(self):
pass
class Reversal(Common):
def __init__(self, invoice_id, nominal=None):
super().__init__(invoice_id)
self.payment = None
if not self.invoice:
return
db_session = get_db_session()
q = db_session.query(Payment).filter_by(id_tagihan=self.invoice.id)
if nominal:
q = q.filter_by(jumlah_yg_dibayar=nominal)
q = q.order_by(Payment.id.desc())
self.payment = q.first()
def do_reversal(self):
db_session = get_db_session()
if self.payment:
self.payment.jumlah_yg_dibayar = 0
db_session.add(self.payment)
self.invoice.status_pembayaran = 0
db_session.add(self.invoice)
class AvailableInvoice(BaseAvailableInvoice):
def get_query(self):
db_session = get_db_session()
q = db_session.query(Invoice).filter_by(status_pembayaran=0)
if self.option.tahun:
q = q.filter_by(tahun_pajak=self.option.tahun)
if self.option.min_nominal:
q = q.filter(Invoice.bphtb_hrs_bayar >= self.option.min_nominal)
if self.option.max_nominal:
q = q.filter(Invoice.bphtb_hrs_bayar <= self.option.max_nominal)
return q.order_by(Invoice.id.desc())
def get_message(self, row):
inq = Inquiry(row.no_tagihan)
if inq.total < 1:
return
invoice_id = str(row.no_tagihan).ljust(10)
total = thousand(inq.total).rjust(11)
return f'{invoice_id} Rp {total}'
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!