Commit 1aea8b9b by Owo Sugiana

Penambahan modul serang_kab

1 parent a0c0a2c7
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
---------------- ----------------
- Perubahan rumus discount pokok dan discount denda pada modul tangsel sesuai - Perubahan rumus discount pokok dan discount denda pada modul tangsel sesuai
Peraturan Walikota Tangerang Selatan Nomor 34 Tahun 2020 Peraturan Walikota Tangerang Selatan Nomor 34 Tahun 2020
- Penambahan modul serang_kab
0.1.8 2020-08-26 0.1.8 2020-08-26
---------------- ----------------
......
...@@ -19,7 +19,8 @@ requires = [ ...@@ -19,7 +19,8 @@ requires = [
'transaction', 'transaction',
'zope.sqlalchemy', 'zope.sqlalchemy',
'psycopg2-binary', '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( ...@@ -38,7 +39,8 @@ setup(
'console_scripts': [ 'console_scripts': [
'pbb_init_db = sismiop.scripts.init_db:main', 'pbb_init_db = sismiop.scripts.init_db:main',
'pbb_available_invoice = sismiop.scripts.available_invoice: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', 'pbb_inquiry = sismiop.scripts.inquiry:main',
] ]
} }
......
...@@ -44,6 +44,7 @@ class Propinsi(Base, PropinsiMixin): ...@@ -44,6 +44,7 @@ class Propinsi(Base, PropinsiMixin):
class TempatPembayaran(Base, TempatPembayaranMixin): class TempatPembayaran(Base, TempatPembayaranMixin):
pass pass
class PenguranganCovid(Base): class PenguranganCovid(Base):
__tablename__ = 'pengurangan_covid' __tablename__ = 'pengurangan_covid'
kd_propinsi = Column(String(2), primary_key=True) kd_propinsi = Column(String(2), primary_key=True)
...@@ -57,7 +58,7 @@ class PenguranganCovid(Base): ...@@ -57,7 +58,7 @@ class PenguranganCovid(Base):
pembayaran_sppt_ke = Column(Integer, primary_key=True) pembayaran_sppt_ke = Column(Integer, primary_key=True)
bayar = Column(Float, nullable=False) bayar = Column(Float, nullable=False)
denda = Column(Float, nullable=False) denda = Column(Float, nullable=False)
#__table_args__ = ( # __table_args__ = (
# ForeignKeyConstraint( # ForeignKeyConstraint(
# [kd_propinsi, kd_dati2, kd_kecamatan, kd_kelurahan, kd_blok, # [kd_propinsi, kd_dati2, kd_kecamatan, kd_kelurahan, kd_blok,
# no_urut, kd_jns_op, thn_pajak_sppt, pembayaran_sppt_ke], # no_urut, kd_jns_op, thn_pajak_sppt, pembayaran_sppt_ke],
......
...@@ -21,4 +21,3 @@ class KabupatenMixin: ...@@ -21,4 +21,3 @@ class KabupatenMixin:
@declared_attr @declared_attr
def nm_dati2(self): def nm_dati2(self):
return Column(String(30)) return Column(String(30))
...@@ -25,4 +25,3 @@ class KecamatanMixin: ...@@ -25,4 +25,3 @@ class KecamatanMixin:
@declared_attr @declared_attr
def nm_kecamatan(self): def nm_kecamatan(self):
return Column(String(30)) return Column(String(30))
...@@ -42,4 +42,3 @@ class KelurahanMixin: ...@@ -42,4 +42,3 @@ class KelurahanMixin:
@declared_attr @declared_attr
def kd_pos_kelurahan(self): def kd_pos_kelurahan(self):
return Column(String(5)) return Column(String(5))
...@@ -9,7 +9,7 @@ from sqlalchemy import ( ...@@ -9,7 +9,7 @@ from sqlalchemy import (
from sqlalchemy.ext.declarative import declared_attr from sqlalchemy.ext.declarative import declared_attr
class ObjekPajakMixin: class BaseObjekPajakMixin:
@declared_attr @declared_attr
def __tablename__(self): def __tablename__(self):
return 'dat_objek_pajak' return 'dat_objek_pajak'
...@@ -107,10 +107,6 @@ class ObjekPajakMixin: ...@@ -107,10 +107,6 @@ class ObjekPajakMixin:
return Column(Date) return Column(Date)
@declared_attr @declared_attr
def nip_pendata(self):
return Column(String(18))
@declared_attr
def tgl_pemeriksaan_op(self): def tgl_pemeriksaan_op(self):
return Column(Date) return Column(Date)
...@@ -126,3 +122,8 @@ class ObjekPajakMixin: ...@@ -126,3 +122,8 @@ class ObjekPajakMixin:
def nip_perekam_op(self): def nip_perekam_op(self):
return Column(String(18)) return Column(String(18))
class ObjekPajakMixin(BaseObjekPajakMixin):
@declared_attr
def nip_pendata(self):
return Column(String(18))
...@@ -51,17 +51,19 @@ class BasePembayaranSpptMixin: ...@@ -51,17 +51,19 @@ class BasePembayaranSpptMixin:
return Column(Integer, primary_key=True) return Column(Integer, primary_key=True)
@declared_attr @declared_attr
def kd_kanwil(self): def kd_tp(self):
return Column(String(2), primary_key=True) return Column(String(2), primary_key=True)
@declared_attr @declared_attr
def kd_kantor(self): def tgl_pembayaran_sppt(self):
return Column(String(2), primary_key=True) return Column(DateTime)
@declared_attr @declared_attr
def kd_tp(self): def tgl_rekam_byr_sppt(self):
return Column(String(2), primary_key=True) return Column(DateTime)
class PembayaranSpptMixin(BasePembayaranSpptMixin):
@declared_attr @declared_attr
def denda_sppt(self): def denda_sppt(self):
return Column(BigInteger) return Column(BigInteger)
...@@ -71,20 +73,17 @@ class BasePembayaranSpptMixin: ...@@ -71,20 +73,17 @@ class BasePembayaranSpptMixin:
return Column(BigInteger) return Column(BigInteger)
@declared_attr @declared_attr
def tgl_pembayaran_sppt(self): def discount(self):
return Column(DateTime) return Column(BigInteger)
@declared_attr
def tgl_rekam_byr_sppt(self):
return Column(DateTime)
@declared_attr @declared_attr
def nip_rekam_byr_sppt(self): def nip_rekam_byr_sppt(self):
return Column(String(18)) return Column(String(18))
class PembayaranSpptMixin(BasePembayaranSpptMixin):
@declared_attr @declared_attr
def discount(self): def kd_kanwil(self):
return Column(BigInteger) 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: ...@@ -17,4 +17,3 @@ class PropinsiMixin:
@declared_attr @declared_attr
def nm_propinsi(self): def nm_propinsi(self):
return Column(String(30)) 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 ( ...@@ -9,7 +9,7 @@ from sqlalchemy import (
from sqlalchemy.ext.declarative import declared_attr from sqlalchemy.ext.declarative import declared_attr
class SpptMixin: class BaseSpptMixin:
@declared_attr @declared_attr
def __tablename__(self): def __tablename__(self):
return 'sppt' return 'sppt'
...@@ -50,22 +50,6 @@ class SpptMixin: ...@@ -50,22 +50,6 @@ class SpptMixin:
def siklus_sppt(self): def siklus_sppt(self):
return Column(Integer) 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 @declared_attr
def kd_tp(self): def kd_tp(self):
return Column(String(2)) return Column(String(2))
...@@ -154,10 +138,6 @@ class SpptMixin: ...@@ -154,10 +138,6 @@ class SpptMixin:
def njoptkp_sppt(self): def njoptkp_sppt(self):
return Column(Integer) return Column(Integer)
#@declared_attr
#def njkp_sppt(self):
# return Column(Integer)
@declared_attr @declared_attr
def pbb_terhutang_sppt(self): def pbb_terhutang_sppt(self):
return Column(Float) return Column(Float)
...@@ -167,10 +147,6 @@ class SpptMixin: ...@@ -167,10 +147,6 @@ class SpptMixin:
return Column(Float) return Column(Float)
@declared_attr @declared_attr
def pbb_yg_harus_dibayar_sppt(self):
return Column(Float)
@declared_attr
def status_pembayaran_sppt(self): def status_pembayaran_sppt(self):
return Column(String(1)) return Column(String(1))
...@@ -194,10 +170,8 @@ class SpptMixin: ...@@ -194,10 +170,8 @@ class SpptMixin:
def nip_pencetak_sppt(self): def nip_pencetak_sppt(self):
return Column(String(18)) return Column(String(18))
@declared_attr
def kd_kanwil(self):
return Column(String(2))
class SpptMixin(BaseSpptMixin):
@declared_attr @declared_attr
def kd_kantor(self): def pbb_yg_harus_dibayar_sppt(self):
return Column(String(2)) return Column(Float)
...@@ -57,4 +57,3 @@ class SubjekPajakMixin: ...@@ -57,4 +57,3 @@ class SubjekPajakMixin:
@declared_attr @declared_attr
def status_pekerjaan_wp(self): def status_pekerjaan_wp(self):
return Column(String(1)) return Column(String(1))
from sqlalchemy import (
Column,
Integer,
String,
Float,
)
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from .objek_pajak import ObjekPajakMixin from .objek_pajak import ObjekPajakMixin
from .sppt import SpptMixin from .sppt import SpptMixin
...@@ -26,7 +20,11 @@ class Sppt(Base, SpptMixin): ...@@ -26,7 +20,11 @@ class Sppt(Base, SpptMixin):
class PembayaranSppt(Base, BasePembayaranSpptMixin): 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): class Kelurahan(Base, KelurahanMixin):
......
...@@ -54,7 +54,8 @@ def get_option_tangsel(argv): ...@@ -54,7 +54,8 @@ def get_option_tangsel(argv):
pars.add_argument('--tahun') pars.add_argument('--tahun')
pars.add_argument('--discount-penuh', action='store_true') pars.add_argument('--discount-penuh', action='store_true')
pars.add_argument( 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('--min-nominal', type=int)
pars.add_argument('--max-nominal', type=int) pars.add_argument('--max-nominal', type=int)
pars.add_argument( pars.add_argument(
......
...@@ -152,10 +152,15 @@ def main(argv=sys.argv): ...@@ -152,10 +152,15 @@ def main(argv=sys.argv):
if not inq.is_available(): if not inq.is_available():
print('Tagihan tidak diperkenankan dibayar melalui jalur ini.') print('Tagihan tidak diperkenankan dibayar melalui jalur ini.')
return 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_kanwil=conf.get('main', 'kd_kanwil'),
kd_kantor=conf.get('main', 'kd_kantor'), kd_kantor=conf.get('main', 'kd_kantor')))
kd_tp=conf.get('main', 'kd_tp')) 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') nip = conf.get('main', 'nip_pencatat')
pay = inq.do_payment(tp, nip) pay = inq.do_payment(tp, nip)
show_payment(module_name, inq, pay) show_payment(module_name, inq, pay)
...@@ -176,11 +181,10 @@ def main(argv=sys.argv): ...@@ -176,11 +181,10 @@ def main(argv=sys.argv):
DBSession.add(inq.invoice) DBSession.add(inq.invoice)
print('Sudah diperbarui, silakan inquiry lagi.') print('Sudah diperbarui, silakan inquiry lagi.')
if inq.invoice.status_pembayaran_sppt == '1': 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') 'tidak perlu diperbarui lagi')
else: else:
print('Field status_pembayaran_sppt harus 0') print('Field status_pembayaran_sppt harus 0')
else: else:
print('Total Tagihan harus 0') 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): ...@@ -63,7 +63,6 @@ class Inquiry(BaseInquiry):
return 0 return 0
disc_list = bulan_disc[self.tgl_bayar.month] disc_list = bulan_disc[self.tgl_bayar.month]
for max_tagihan, disc in disc_list: for max_tagihan, disc in disc_list:
#print('max_tagihan {}, disc {}'.format(max_tagihan, disc))
if max_tagihan is None: if max_tagihan is None:
break break
if self.invoice.pbb_yg_harus_dibayar_sppt <= max_tagihan: if self.invoice.pbb_yg_harus_dibayar_sppt <= max_tagihan:
......
...@@ -62,7 +62,6 @@ class Inquiry(BaseInquiry): ...@@ -62,7 +62,6 @@ class Inquiry(BaseInquiry):
return bayar return bayar
class Reversal(BaseReversal): class Reversal(BaseReversal):
def get_invoice_model(self): def get_invoice_model(self):
return Sppt return Sppt
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!