Commit 1aea8b9b by Owo Sugiana

Penambahan modul serang_kab

1 parent a0c0a2c7
......@@ -2,6 +2,7 @@
----------------
- Perubahan rumus discount pokok dan discount denda pada modul tangsel sesuai
Peraturan Walikota Tangerang Selatan Nomor 34 Tahun 2020
- Penambahan modul serang_kab
0.1.8 2020-08-26
----------------
......
......@@ -19,7 +19,8 @@ requires = [
'transaction',
'zope.sqlalchemy',
'psycopg2-binary',
'opensipkd-hitung @ git+https://git.opensipkd.com/sugiana/opensipkd-hitung',
'opensipkd-hitung @ '
'git+https://git.opensipkd.com/sugiana/opensipkd-hitung',
]
......@@ -38,7 +39,8 @@ setup(
'console_scripts': [
'pbb_init_db = sismiop.scripts.init_db:main',
'pbb_available_invoice = sismiop.scripts.available_invoice:main',
'pbb_available_invoice_tangsel = sismiop.scripts.available_invoice:tangsel',
'pbb_available_invoice_tangsel = '
'sismiop.scripts.available_invoice:tangsel',
'pbb_inquiry = sismiop.scripts.inquiry:main',
]
}
......
......@@ -44,6 +44,7 @@ class Propinsi(Base, PropinsiMixin):
class TempatPembayaran(Base, TempatPembayaranMixin):
pass
class PenguranganCovid(Base):
__tablename__ = 'pengurangan_covid'
kd_propinsi = Column(String(2), primary_key=True)
......@@ -57,7 +58,7 @@ class PenguranganCovid(Base):
pembayaran_sppt_ke = Column(Integer, primary_key=True)
bayar = Column(Float, nullable=False)
denda = Column(Float, nullable=False)
#__table_args__ = (
# __table_args__ = (
# ForeignKeyConstraint(
# [kd_propinsi, kd_dati2, kd_kecamatan, kd_kelurahan, kd_blok,
# no_urut, kd_jns_op, thn_pajak_sppt, pembayaran_sppt_ke],
......
......@@ -21,4 +21,3 @@ class KabupatenMixin:
@declared_attr
def nm_dati2(self):
return Column(String(30))
......@@ -25,4 +25,3 @@ class KecamatanMixin:
@declared_attr
def nm_kecamatan(self):
return Column(String(30))
......@@ -42,4 +42,3 @@ class KelurahanMixin:
@declared_attr
def kd_pos_kelurahan(self):
return Column(String(5))
......@@ -9,7 +9,7 @@ from sqlalchemy import (
from sqlalchemy.ext.declarative import declared_attr
class ObjekPajakMixin:
class BaseObjekPajakMixin:
@declared_attr
def __tablename__(self):
return 'dat_objek_pajak'
......@@ -107,10 +107,6 @@ class ObjekPajakMixin:
return Column(Date)
@declared_attr
def nip_pendata(self):
return Column(String(18))
@declared_attr
def tgl_pemeriksaan_op(self):
return Column(Date)
......@@ -126,3 +122,8 @@ class ObjekPajakMixin:
def nip_perekam_op(self):
return Column(String(18))
class ObjekPajakMixin(BaseObjekPajakMixin):
@declared_attr
def nip_pendata(self):
return Column(String(18))
......@@ -51,17 +51,19 @@ class BasePembayaranSpptMixin:
return Column(Integer, primary_key=True)
@declared_attr
def kd_kanwil(self):
def kd_tp(self):
return Column(String(2), primary_key=True)
@declared_attr
def kd_kantor(self):
return Column(String(2), primary_key=True)
def tgl_pembayaran_sppt(self):
return Column(DateTime)
@declared_attr
def kd_tp(self):
return Column(String(2), primary_key=True)
def tgl_rekam_byr_sppt(self):
return Column(DateTime)
class PembayaranSpptMixin(BasePembayaranSpptMixin):
@declared_attr
def denda_sppt(self):
return Column(BigInteger)
......@@ -71,20 +73,17 @@ class BasePembayaranSpptMixin:
return Column(BigInteger)
@declared_attr
def tgl_pembayaran_sppt(self):
return Column(DateTime)
@declared_attr
def tgl_rekam_byr_sppt(self):
return Column(DateTime)
def discount(self):
return Column(BigInteger)
@declared_attr
def nip_rekam_byr_sppt(self):
return Column(String(18))
class PembayaranSpptMixin(BasePembayaranSpptMixin):
@declared_attr
def discount(self):
return Column(BigInteger)
def kd_kanwil(self):
return Column(String(2), primary_key=True)
@declared_attr
def kd_kantor(self):
return Column(String(2), primary_key=True)
......@@ -17,4 +17,3 @@ class PropinsiMixin:
@declared_attr
def nm_propinsi(self):
return Column(String(30))
from sqlalchemy import (
Column,
Float,
String,
)
from sqlalchemy.ext.declarative import declarative_base
from .objek_pajak import BaseObjekPajakMixin
from .sppt import BaseSpptMixin
from .pembayaran_sppt import BasePembayaranSpptMixin
from .kelurahan import KelurahanMixin
from .kecamatan import KecamatanMixin
from .propinsi import PropinsiMixin
from .tempat_pembayaran import TempatPembayaranMixin
Base = declarative_base()
class ObjekPajak(Base, BaseObjekPajakMixin):
__table_args__ = dict(schema='iprotaxpbb')
class Sppt(Base, BaseSpptMixin):
__table_args__ = dict(schema='iprotaxpbb')
pbb_yg_hrs_dibayar_sppt = Column(Float)
class PembayaranSppt(Base, BasePembayaranSpptMixin):
__table_args__ = dict(schema='iprotaxpbb')
jml_denda_sppt = Column(Float)
jml_pbb_yg_dibayar = Column(Float, nullable=False)
user_bank_rekam = Column(String(50), nullable=False)
kd_bank_tunggal = Column(String(2), nullable=False)
kd_bank_persepsi = Column(String(2), nullable=False)
no_transaksi_byr_sppt = Column(String(20))
no_transaksi_byr_sppt_bank = Column(String(35))
kd_sumber_data = Column(String(1), nullable=False)
class Kelurahan(Base, KelurahanMixin):
__table_args__ = dict(schema='iprotaxref')
class Kecamatan(Base, KecamatanMixin):
__table_args__ = dict(schema='iprotaxref')
class Propinsi(Base, PropinsiMixin):
__table_args__ = dict(schema='iprotaxref')
class TempatPembayaran(Base, TempatPembayaranMixin):
__table_args__ = dict(schema='iprotaxpbb')
......@@ -9,7 +9,7 @@ from sqlalchemy import (
from sqlalchemy.ext.declarative import declared_attr
class SpptMixin:
class BaseSpptMixin:
@declared_attr
def __tablename__(self):
return 'sppt'
......@@ -50,22 +50,6 @@ class SpptMixin:
def siklus_sppt(self):
return Column(Integer)
#@declared_attr
#def kd_kanwil_bank(self):
# return Column(String(2))
#@declared_attr
#def kd_kppbb_bank(self):
# return Column(String(2))
#@declared_attr
#def kd_bank_tunggal(self):
# return Column(String(2))
#@declared_attr
#def kd_bank_persepsi(self):
# return Column(String(2))
@declared_attr
def kd_tp(self):
return Column(String(2))
......@@ -154,10 +138,6 @@ class SpptMixin:
def njoptkp_sppt(self):
return Column(Integer)
#@declared_attr
#def njkp_sppt(self):
# return Column(Integer)
@declared_attr
def pbb_terhutang_sppt(self):
return Column(Float)
......@@ -167,10 +147,6 @@ class SpptMixin:
return Column(Float)
@declared_attr
def pbb_yg_harus_dibayar_sppt(self):
return Column(Float)
@declared_attr
def status_pembayaran_sppt(self):
return Column(String(1))
......@@ -194,10 +170,8 @@ class SpptMixin:
def nip_pencetak_sppt(self):
return Column(String(18))
@declared_attr
def kd_kanwil(self):
return Column(String(2))
class SpptMixin(BaseSpptMixin):
@declared_attr
def kd_kantor(self):
return Column(String(2))
def pbb_yg_harus_dibayar_sppt(self):
return Column(Float)
......@@ -57,4 +57,3 @@ class SubjekPajakMixin:
@declared_attr
def status_pekerjaan_wp(self):
return Column(String(1))
from sqlalchemy import (
Column,
Integer,
String,
Float,
)
from sqlalchemy.ext.declarative import declarative_base
from .objek_pajak import ObjekPajakMixin
from .sppt import SpptMixin
......@@ -26,7 +20,11 @@ class Sppt(Base, SpptMixin):
class PembayaranSppt(Base, BasePembayaranSpptMixin):
pass
denda_sppt = Column(BigInteger)
jml_sppt_yg_dibayar = Column(BigInteger)
nip_rekam_byr_sppt = Column(String(18))
kd_kanwil = Column(String(2))
kd_kantor = Column(String(2))
class Kelurahan(Base, KelurahanMixin):
......
......@@ -54,7 +54,8 @@ def get_option_tangsel(argv):
pars.add_argument('--tahun')
pars.add_argument('--discount-penuh', action='store_true')
pars.add_argument(
'--faktor-pengurang', type=str2bool, nargs='?', const=True, default=None)
'--faktor-pengurang', type=str2bool, nargs='?', const=True,
default=None)
pars.add_argument('--min-nominal', type=int)
pars.add_argument('--max-nominal', type=int)
pars.add_argument(
......
......@@ -152,10 +152,15 @@ def main(argv=sys.argv):
if not inq.is_available():
print('Tagihan tidak diperkenankan dibayar melalui jalur ini.')
return
tp = dict(
tp = dict(kd_tp=conf.get('main', 'kd_tp'))
if conf.has_option('main', 'kd_kanwil'):
tp.update(dict(
kd_kanwil=conf.get('main', 'kd_kanwil'),
kd_kantor=conf.get('main', 'kd_kantor'),
kd_tp=conf.get('main', 'kd_tp'))
kd_kantor=conf.get('main', 'kd_kantor')))
else:
tp.update(dict(
kd_bank_tunggal=conf.get('main', 'kd_bank_tunggal'),
kd_bank_persepsi=conf.get('main', 'kd_bank_persepsi')))
nip = conf.get('main', 'nip_pencatat')
pay = inq.do_payment(tp, nip)
show_payment(module_name, inq, pay)
......@@ -176,11 +181,10 @@ def main(argv=sys.argv):
DBSession.add(inq.invoice)
print('Sudah diperbarui, silakan inquiry lagi.')
if inq.invoice.status_pembayaran_sppt == '1':
print('Field status_pembayaran_sppt sudah 1, '\
print(
'Field status_pembayaran_sppt sudah 1, '
'tidak perlu diperbarui lagi')
else:
print('Field status_pembayaran_sppt harus 0')
else:
print('Total Tagihan harus 0')
from datetime import datetime
from sqlalchemy import func
from opensipkd.hitung import round_up
from sismiop.models.serang_kab import (
ObjekPajak,
Sppt,
PembayaranSppt,
Kelurahan,
Kecamatan,
Propinsi,
)
from ..base import (
AvailableInvoice as BaseAvailableInvoice,
Inquiry as BaseInquiry,
Reversal as BaseReversal,
get_db_session,
)
class Inquiry(BaseInquiry):
def hitung_pokok(self): # Override
DBSession = get_db_session()
Payment = self.get_payment_model()
q = DBSession.query(
func.sum(Payment.jml_pbb_yg_dibayar).
label('jml_sppt_yg_dibayar'),
func.sum(Payment.jml_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_hrs_dibayar_sppt - sisa
if tagihan < 0:
self.tagihan = 0
else:
self.tagihan = round_up(tagihan)
def do_payment(self, bank_fields, user_id, ntp=None, ntb=None): # Override
DBSession = get_db_session()
Payment = self.get_payment_model()
bayar = self.invoice2payment()
if bayar:
ke = bayar.pembayaran_sppt_ke + 1
else:
ke = 1
inv = self.invoice
bayar = Payment(
kd_propinsi=inv.kd_propinsi, kd_dati2=inv.kd_dati2,
kd_kecamatan=inv.kd_kecamatan, kd_kelurahan=inv.kd_kelurahan,
kd_blok=inv.kd_blok, no_urut=inv.no_urut,
kd_jns_op=inv.kd_jns_op, thn_pajak_sppt=inv.thn_pajak_sppt,
pembayaran_sppt_ke=ke, tgl_rekam_byr_sppt=datetime.now(),
tgl_pembayaran_sppt=self.tgl_bayar,
no_transaksi_byr_sppt=ntp,
no_transaksi_byr_sppt_bank=ntb,
user_bank_rekam=user_id,
jml_pbb_yg_dibayar=self.tagihan+self.denda,
jml_denda_sppt=self.denda,
kd_sumber_data='5')
for key, value in bank_fields.items():
setattr(bayar, key, value)
self.before_save(bayar)
DBSession.add(bayar)
self.invoice.status_pembayaran_sppt = '1' # Lunas
DBSession.add(self.invoice)
return bayar
def get_op_model(self): # Override
return ObjekPajak
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 do_reversal(self): # Override
DBSession = get_db_session()
self.payment.jml_pbb_yg_dibayar = self.payment.jml_denda_sppt = 0
self.before_save()
DBSession.add(self.payment)
self.invoice.status_pembayaran_sppt = '0'
DBSession.add(self.invoice)
def get_invoice_model(self): # Override
return Sppt
def get_payment_model(self): # Override
return PembayaranSppt
class AvailableInvoice(BaseAvailableInvoice):
def get_invoice_model(self): # Override
return Sppt
def get_payment_model(self): # Override
return PembayaranSppt
def get_inquiry_class(self): # Override
return Inquiry
......@@ -63,7 +63,6 @@ class Inquiry(BaseInquiry):
return 0
disc_list = bulan_disc[self.tgl_bayar.month]
for max_tagihan, disc in disc_list:
#print('max_tagihan {}, disc {}'.format(max_tagihan, disc))
if max_tagihan is None:
break
if self.invoice.pbb_yg_harus_dibayar_sppt <= max_tagihan:
......
......@@ -62,7 +62,6 @@ class Inquiry(BaseInquiry):
return bayar
class Reversal(BaseReversal):
def get_invoice_model(self):
return Sppt
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!