Commit 80c7a59e by Owo Sugiana

Tambah Kabupaten Serang

1 parent 61663a90
0.4.4 2022-12-22 0.4.4 2022-12-22
---------------- ----------------
- Tambah Kabupaten Serang
- bin/inquiry tambah --ntp dan --tgl-bayar bisa ada jam - bin/inquiry tambah --ntp dan --tgl-bayar bisa ada jam
0.4.3 2022-03-12 0.4.3 2022-03-12
......
from sqlalchemy import (
Column,
String,
DateTime,
Float,
ForeignKey,
ForeignKeyConstraint,
UniqueConstraint,
)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
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(50), nullable=False)
nm_adm_kecamatan = Column(String(20))
__table_args__ = dict(schema='iprotaxref')
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(1),
# ForeignKey('iprotaxref.ref_jns_sektor.kd_sektor'), nullable=False)
nm_kelurahan = Column(String(50), nullable=False)
no_kelurahan = Column(Float)
kd_pos_kelurahan = Column(String(5))
nm_adm_kelurahan = Column(String(20))
__table_args__ = dict(schema='iprotaxref')
class Customer(Base):
__tablename__ = 'ref_pejabat'
kd_propinsi = Column(String(2), primary_key=True)
kd_dati2 = Column(String(2), primary_key=True)
kd_pejabat = Column(String(4), primary_key=True)
# kd_jns_pejabat = Column(String(1),
# ForeignKey('iprotaxbphtb.ref_jns_pejabat.kd_jns_pejabat'),
# nullable=False)
nm_pejabat = Column(String(50))
alm_pejabat = Column(String(100))
kota_pejabat = Column(String(50))
faksimili_pejabat = Column(String(30))
telp_pejabat = Column(String(30))
email_pejabat = Column(String(50))
npwp = Column(String(20))
__table_args__ = dict(schema='iprotaxbphtb')
class Subjek(Base):
__tablename__ = 'dat_wp_bphtb'
id_wp_bphtb = Column(String(30), primary_key=True)
nm_wp = Column(String(100), nullable=False)
jalan_wp = Column(String(100), nullable=False)
blok_kav_no_wp = Column(String(15))
rw_wp = Column(String(50))
rt_wp = Column(String(3))
kelurahan_wp = Column(String(50))
kecamatan_wp = Column(String(50))
kota_wp = Column(String(50))
kd_pos_wp = Column(String(5))
telp_wp = Column(String(30))
email_wp = Column(String(50))
npwp = Column(String(20))
no_domisili = Column(String(30))
jenis_wp = Column(Float)
__table_args__ = dict(schema='iprotaxbphtb')
class Invoice(Base):
__tablename__ = 'dat_ssb_ppat'
kd_propinsi = Column(String(2), primary_key=True)
kd_dati2 = Column(String(2), primary_key=True)
thn_bphtb = Column(String(4), primary_key=True)
bln_bphtb = Column(String(2), primary_key=True)
tgl_bphtb = Column(String(2), primary_key=True)
no_urut_bphtb = Column(String(4), primary_key=True)
indeks_bphtb = Column(String(3), primary_key=True)
id_penjual_bphtb = Column(String(30), ForeignKey(Subjek.id_wp_bphtb))
id_pembeli_bphtb = Column(
String(30), ForeignKey(Subjek.id_wp_bphtb), nullable=False)
# kd_perolehan = Column(String(2),
# ForeignKey('iprotaxbphtb.ref_jns_perolehan.kd_perolehan'),
# nullable=False)
hrg_transaksi = Column(Float, nullable=False)
akumulasi_npop_sblm = Column(Float)
npop = Column(Float, nullable=False)
npoptkp = Column(Float, nullable=False)
npopkp = Column(Float, nullable=False)
bphtb_terutang = Column(Float, nullable=False)
dsr_pengenaan = Column(String(2))
pengenaan = Column(Float)
bphtb_hrs_dibayar = Column(Float, nullable=False)
# kd_dsr_setoran = Column(String(2),
# ForeignKey('iprotaxbphtb.ref_dasar_setoran.kd_dsr_setoran'),
# nullable=False)
kd_jns_ketetapan = Column(String(2))
no_srt_ketetapan = Column(String(30))
tgl_srt_ketetapan = Column(DateTime)
# kd_als_pengurangan = Column(String(2),
# ForeignKey('iprotaxbphtb.ref_als_pengurangan.kd_als_pengurangan'))
pengurangan_sendiri = Column(Float)
bphtb_disetor = Column(Float, nullable=False)
kd_pejabat = Column(String(4), nullable=False)
kd_bank_tunggal = Column(String(2))
kd_bank_persepsi = Column(String(2))
no_trans_bayar = Column(String(20))
tgl_bayar_ssb_wp = Column(DateTime)
tgl_terbit_ssb_wp = Column(DateTime, nullable=False)
tgl_rekam = Column(DateTime, nullable=False)
# nip_perekam = Column(String(9), ForeignKey(Customer.nip))
no_bphtb_offline = Column(String(19))
no_akta = Column(String(20))
tgl_akta = Column(DateTime)
thn_bphtb_induk = Column(String(4))
bln_bphtb_induk = Column(String(2))
tgl_bphtb_induk = Column(String(2))
no_urut_bphtb_induk = Column(String(4))
indeks_bphtb_induk = Column(String(3))
tarif_bphtb = Column(Float)
__table_args__ = (
ForeignKeyConstraint([
kd_propinsi, kd_dati2, kd_pejabat],
[Customer.kd_propinsi, Customer.kd_dati2, Customer.kd_pejabat]),
dict(schema='iprotaxbphtb'))
class Objek(Base):
__tablename__ = 'dat_op_ssb_ppat'
kd_propinsi = Column(String(2), primary_key=True)
kd_dati2 = Column(String(2), primary_key=True)
thn_bphtb = Column(String(4), primary_key=True)
bln_bphtb = Column(String(2), primary_key=True)
tgl_bphtb = Column(String(2), primary_key=True)
no_urut_bphtb = Column(String(4), primary_key=True)
indeks_bphtb = Column(String(3), primary_key=True)
kd_kecamatan_op = Column(String(3), primary_key=True)
kd_kelurahan_op = Column(String(3), primary_key=True)
kd_blok_op = Column(String(3), primary_key=True)
no_urut_op = Column(String(4), primary_key=True)
kd_jns_op = Column(String(1), primary_key=True)
kd_blok_baru = Column(String(3))
no_urut_baru = Column(String(4))
kd_jns_op_baru = Column(String(1))
jalan_op = Column(String(50))
blok_kav_no_op = Column(String(15))
rt_op = Column(String(3))
rw_op = Column(String(50))
kd_pos_op = Column(String(5))
luas_tanah = Column(Float, nullable=False)
luas_bangunan = Column(Float, nullable=False)
njop_tanah_m2 = Column(Float, nullable=False)
njop_bng_m2 = Column(Float, nullable=False)
njop_tanah = Column(Float, nullable=False)
njop_bangunan = Column(Float, nullable=False)
njop_total = Column(Float, nullable=False)
# kd_jns_hak = Column(String(2),
# ForeignKey('iprotaxbphtb.ref_jns_hak.kd_jns_hak'))
kd_jns_hak = Column(String(2))
kd_kecamatan = Column(String(3))
kd_kelurahan = Column(String(3))
no_sertifikat = Column(String(30))
persen_pengurang_njop = Column(Float)
faktor_pengurang_njop = Column(Float)
__table_args__ = (
ForeignKeyConstraint([
kd_propinsi, kd_dati2, kd_kecamatan, kd_kelurahan],
[Kelurahan.kd_propinsi, Kelurahan.kd_dati2, Kelurahan.kd_kecamatan,
Kelurahan.kd_kelurahan]),
ForeignKeyConstraint([
kd_propinsi, kd_dati2, thn_bphtb, bln_bphtb, tgl_bphtb,
no_urut_bphtb, indeks_bphtb],
[Invoice.kd_propinsi, Invoice.kd_dati2, Invoice.thn_bphtb,
Invoice.bln_bphtb, Invoice.tgl_bphtb, Invoice.no_urut_bphtb,
Invoice.indeks_bphtb]),
dict(schema='iprotaxbphtb'))
class Payment(Base):
__tablename__ = 'pembayaran_bphtb'
kd_propinsi = Column(String(2), primary_key=True)
kd_dati2 = Column(String(2), primary_key=True)
thn_bphtb = Column(String(4), primary_key=True)
bln_bphtb = Column(String(2), primary_key=True)
tgl_bphtb = Column(String(2), primary_key=True)
no_urut_bphtb = Column(String(4), primary_key=True)
indeks_bphtb = Column(String(3), primary_key=True)
kd_pejabat = Column(String(4))
kd_bank_tunggal = Column(String(2), nullable=False)
kd_bank_persepsi = Column(String(2), nullable=False)
tgl_pembayaran = Column(DateTime, nullable=False)
no_trans_bayar = Column(String(20), nullable=False, unique=True)
nama_wp = Column(String(100), nullable=False)
bphtb_kurang_bayar = Column(Float, nullable=False)
bphtb_sdh_dibayar = Column(Float, nullable=False)
kd_kecamatan_op = Column(String(3))
kd_kelurahan_op = Column(String(3))
kd_blok_op = Column(String(3))
no_urut_op = Column(String(4))
kd_jns_op = Column(String(1))
kd_tp = Column(String(2))
user_bank_rekam = Column(String(50), nullable=False)
nm_penyetor = Column(String(50), nullable=False)
kd_sumber_data = Column(String(1), nullable=False)
no_transaksi_byr_bank = Column(String(30))
# iso_message_id = Column(Float,
# ForeignKey('iprotaxiso.iprotax_iso_msg_log.id_message_log'))
tgl_rekon_bayar = Column(DateTime)
no_transaksi_byr = Column(String(20))
tgl_rekam_byr = Column(DateTime)
__table_args__ = (
dict(schema='iprotaxbphtb'))
class LapPpat(Base):
__tablename__ = 'dat_lap_ppat'
kd_propinsi = Column(String(2), primary_key=True)
kd_dati2 = Column(String(2), primary_key=True)
thn_bphtb = Column(String(4), primary_key=True)
bln_bphtb = Column(String(2), primary_key=True)
tgl_bphtb = Column(String(2), primary_key=True)
no_urut_bphtb = Column(String(4), primary_key=True)
indeks_bphtb = Column(String(3), primary_key=True)
kd_pejabat = Column(String(4), nullable=False)
# id_wp_bphtb = Column(String(30),
# ForeignKey('iprotaxbphtb.dat_wp_bphtb.id_wp_bphtb'), nullable=False)
# id_penjual_bphtb = Column(String(30),
# ForeignKey('iprotaxbphtb.dat_wp_bphtb.id_wp_bphtb'))
kd_kecamatan_op = Column(String(3))
kd_kelurahan_op = Column(String(3))
kd_blok_op = Column(String(3))
no_urut_op = Column(String(4))
kd_jns_op = Column(String(1))
jalan_op = Column(String(50))
blok_kav_no_op = Column(String(15))
rw_op = Column(String(50))
rt_op = Column(String(3))
tgl_setor_ssp = Column(DateTime)
ssp_disetor = Column(Float)
luas_bumi = Column(Float, nullable=False)
luas_bng = Column(Float, nullable=False)
njop_bumi_m2 = Column(Float, nullable=False)
njop_bng_m2 = Column(Float, nullable=False)
# kd_perolehan = Column(String(2),
# ForeignKey('iprotaxbphtb.ref_jns_perolehan.kd_perolehan'),
# nullable=False)
# kd_jns_hak = Column(String(2),
# ForeignKey('iprotaxbphtb.ref_jns_hak.kd_jns_hak'))
no_sertifikat = Column(String(30))
hrg_transaksi = Column(Float, nullable=False)
tgl_ssb_ppat = Column(DateTime, nullable=False)
bphtb_disetor = Column(Float, nullable=False)
no_akta = Column(String(20))
tgl_akta = Column(DateTime)
tgl_rekam = Column(DateTime, nullable=False)
keterangan_ppat = Column(String(255))
user_rekam = Column(String(50))
__table_args__ = (
ForeignKeyConstraint([
kd_propinsi, kd_dati2, kd_pejabat],
[Customer.kd_propinsi, Customer.kd_dati2, Customer.kd_pejabat]),
dict(schema='iprotaxbphtb'))
class Skbkb(Base):
__tablename__ = 'dat_skbkb'
kd_propinsi = Column(String(2), primary_key=True)
kd_dati2 = Column(String(2), primary_key=True)
thn_bphtb = Column(String(4), primary_key=True)
bln_bphtb = Column(String(2), primary_key=True)
tgl_bphtb = Column(String(2), primary_key=True)
no_urut_bphtb = Column(String(4), primary_key=True)
indeks_bphtb = Column(String(3), primary_key=True)
no_skbkb = Column(String(30), nullable=False)
tgl_skbkb = Column(DateTime, nullable=False)
tgl_jth_tempo = Column(DateTime)
pokok_stb = Column(Float)
pengurangan = Column(Float)
pokok_skblb_skpkb = Column(Float)
bphtb_total = Column(Float)
bphtb_krg_bayar = Column(Float)
jml_bln_bunga = Column(Float)
jml_bunga = Column(Float)
jml_bphtb_krg_bayar = Column(Float)
tgl_rekam = Column(DateTime, nullable=False)
# nip_perekam = Column(String(9), ForeignKey('iprotaxref.pegawai.nip'),
# nullable=False)
thn_bphtb_terbit = Column(String(4))
bln_bphtb_terbit = Column(String(2))
tgl_bphtb_terbit = Column(String(2))
no_urut_bphtb_terbit = Column(String(4))
indeks_bphtb_terbit = Column(String(3))
status_pembayaran = Column(String(1))
status_pembatalan = Column(Float)
no_pelayanan_pembatalan = Column(String(11))
__table_args__ = (
dict(schema='iprotaxbphtb'))
class SsbWp(Base):
__tablename__ = 'dat_ssb_wp'
kd_propinsi = Column(String(2), primary_key=True)
kd_dati2 = Column(String(2), primary_key=True)
thn_bphtb = Column(String(4), primary_key=True)
bln_bphtb = Column(String(2), primary_key=True)
tgl_bphtb = Column(String(2), primary_key=True)
no_urut_bphtb = Column(String(4), primary_key=True)
indeks_bphtb = Column(String(3), primary_key=True)
# id_penjual_bphtb = Column(String(30),
# ForeignKey('iprotaxbphtb.dat_wp_bphtb.id_wp_bphtb'))
# id_pembeli_bphtb = Column(String(30),
# ForeignKey('iprotaxbphtb.dat_wp_bphtb.id_wp_bphtb'), nullable=False)
# kd_perolehan = Column(String(2),
# ForeignKey('iprotaxbphtb.ref_jns_perolehan.kd_perolehan'),
# nullable=False)
hrg_transaksi = Column(Float, nullable=False)
akumulasi_npop_sblm = Column(Float)
npop = Column(Float, nullable=False)
npoptkp = Column(Float, nullable=False)
npopkp = Column(Float, nullable=False)
bphtb_terutang = Column(Float, nullable=False)
dsr_pengenaan = Column(String(2))
pengenaan = Column(Float)
bphtb_hrs_dibayar = Column(Float, nullable=False)
# kd_dsr_setoran = Column(String(2),
# ForeignKey('iprotaxbphtb.ref_dasar_setoran.kd_dsr_setoran'),
# nullable=False)
kd_jns_ketetapan = Column(String(2))
no_srt_ketetapan = Column(String(30))
tgl_srt_ketetapan = Column(DateTime)
# kd_als_pengurangan = Column(String(2),
# ForeignKey('iprotaxbphtb.ref_als_pengurangan.kd_als_pengurangan'))
pengurangan_sendiri = Column(Float)
bphtb_disetor = Column(Float, nullable=False)
kd_pejabat = Column(String(4))
kd_bank_tunggal = Column(String(2))
kd_bank_persepsi = Column(String(2))
no_trans_bayar = Column(String(20))
tgl_bayar_ssb_wp = Column(DateTime)
tgl_terbit_ssb_wp = Column(DateTime, nullable=False)
tgl_rekam = Column(DateTime, nullable=False)
# nip_perekam = Column(String(9),
# ForeignKey('iprotaxref.pegawai.nip'), nullable=False)
no_akta = Column(String(20))
tgl_akta = Column(DateTime)
thn_bphtb_induk = Column(String(4))
bln_bphtb_induk = Column(String(2))
tgl_bphtb_induk = Column(String(2))
no_urut_bphtb_induk = Column(String(4))
indeks_bphtb_induk = Column(String(3))
tarif_bphtb = Column(Float)
__table_args__ = (
dict(schema='iprotaxbphtb'))
...@@ -12,6 +12,8 @@ help_tgl_bayar = 'format dd-mm-yyyy' ...@@ -12,6 +12,8 @@ help_tgl_bayar = 'format dd-mm-yyyy'
def show_val(label, value): def show_val(label, value):
if value is None:
value = ''
print('{}: {}'.format(label, value)) print('{}: {}'.format(label, value))
......
from datetime import datetime
from sqlalchemy import func
from opensipkd.hitung import (
hitung_denda,
round_up,
)
from opensipkd.string import FixLength
from opensipkd.string.money import thousand
from opensipkd.string.transaction_id import TransactionID
from opensipkd.bphtb.structure import NOP
from opensipkd.bphtb.models.serang_kab import (
Kecamatan,
Kelurahan,
Subjek,
Objek,
Invoice,
Payment,
Customer,
LapPpat,
Skbkb,
SsbWp,
)
from ..base import (
AvailableInvoice as BaseAvailableInvoice,
get_db_session,
)
from .structure import (
INVOICE_ID,
INVOICE_ID_LENGTH,
)
class NTP(TransactionID):
def is_found(self, tid): # Override
db_session = get_db_session()
q = db_session.query(Payment).filter_by(no_trans_bayar=tid)
return q.first()
class Common:
def __init__(self, invoice_id):
self.invoice_id = invoice_id
self.invoice = None
if not self.validate_invoice_id():
return
self.invoice_struct = FixLength(INVOICE_ID)
self.invoice_struct.set_raw(self.invoice_id)
self.invoice = self.get_invoice()
def validate_invoice_id(self):
return len(self.invoice_id) == INVOICE_ID_LENGTH
def filter_invoice(self, q):
return q.filter_by(
thn_bphtb=self.invoice_struct['thn'],
bln_bphtb=self.invoice_struct['bln'],
tgl_bphtb=self.invoice_struct['tgl'],
no_urut_bphtb=self.invoice_struct['no_urut'])
def query_invoice(self, orm=Invoice):
db_session = get_db_session()
q = db_session.query(orm)
return self.filter_invoice(q)
def get_invoice(self, orm=Invoice):
q = self.query_invoice(orm)
return q.first()
def get_payment(self):
return self.get_invoice(Payment)
def update_status(self, tgl_bayar):
db_session = get_db_session()
self.invoice.tgl_bayar_ssb_wp = tgl_bayar
db_session.add(self.invoice)
lap_ppat = self.get_invoice(LapPpat)
if lap_ppat:
lap_ppat.tgl_setor_ssp = tgl_bayar
db_session.add(lap_ppat)
skbkb = self.get_invoice(Skbkb)
if skbkb:
skbkb.status_pembayaran = tgl_bayar and '1' or '0'
db_session.add(skbkb)
ssb_wp = self.get_invoice(SsbWp)
if ssb_wp:
ssb_wp.tgl_bayar_ssb_wp = tgl_bayar
db_session.add(ssb_wp)
class Inquiry(Common):
def __init__(self, invoice_id, conf, tgl_bayar=None):
super().__init__(invoice_id)
if not self.invoice:
return
self.conf = conf
self.tgl_bayar = tgl_bayar or datetime.now()
self.subjek = self.get_subjek()
self.objek = self.get_objek()
self.notaris = self.get_notaris()
self.kelurahan = self.get_kelurahan()
self.kecamatan = self.get_kecamatan()
self.nop_struct = FixLength(NOP)
self.nop_struct.from_dict({
'Propinsi': self.objek.kd_propinsi,
'Kabupaten': self.objek.kd_dati2,
'Kecamatan': self.objek.kd_kecamatan_op,
'Kelurahan': self.objek.kd_kelurahan_op,
'Blok': self.objek.kd_blok_op,
'Urut': self.objek.no_urut_op,
'Jenis': self.objek.kd_jns_op,
})
self.hitung()
def hitung(self):
self.total_bayar = self.get_payment_amount()
self.tagihan = self.invoice.bphtb_hrs_dibayar - self.total_bayar
self.total = self.denda = self.discount = 0
if self.tagihan < 1:
self.tagihan = self.total = 0
else:
self.tagihan = self.total = round_up(self.tagihan)
def get_subjek(self):
db_session = get_db_session()
q = db_session.query(Subjek).filter_by(
id_wp_bphtb=self.invoice.id_pembeli_bphtb)
return q.first()
def get_objek(self):
db_session = get_db_session()
q = db_session.query(Objek).filter_by(
thn_bphtb=self.invoice.thn_bphtb,
bln_bphtb=self.invoice.bln_bphtb,
tgl_bphtb=self.invoice.tgl_bphtb,
no_urut_bphtb=self.invoice.no_urut_bphtb)
return q.first()
def get_nop(self):
return self.invoice and self.nop_struct.get_raw() or ''
def get_profile(self):
db_session = get_db_session()
q = db_session.query(DetailSpt).filter_by(t_idspt=self.invoice.t_idspt)
return q.first()
def get_kecamatan(self):
db_session = get_db_session()
q = db_session.query(Kecamatan).filter_by(
kd_propinsi=self.objek.kd_propinsi,
kd_dati2=self.objek.kd_dati2,
kd_kecamatan=self.objek.kd_kecamatan_op)
return q.first()
def get_kelurahan(self):
db_session = get_db_session()
q = db_session.query(Kelurahan).filter_by(
kd_propinsi=self.objek.kd_propinsi,
kd_dati2=self.objek.kd_dati2,
kd_kecamatan=self.objek.kd_kecamatan_op,
kd_kelurahan=self.objek.kd_kelurahan_op)
return q.first()
def get_notaris(self):
db_session = get_db_session()
q = db_session.query(Customer).filter_by(
kd_pejabat=self.invoice.kd_pejabat)
return q.first()
def get_luas_tanah(self):
return int(self.objek.luas_tanah)
def get_luas_bangunan(self):
return int(self.objek.luas_bangunan)
def get_npop(self):
return self.invoice.npop
def get_jenis_perolehan_hak(self):
return self.objek.kd_jns_hak
def get_nama_notaris(self):
if self.notaris:
return self.notaris.nm_pejabat.upper()
def get_nama(self): # Nama Wajib Pajak
return self.subjek.nm_wp
def get_npwp(self):
return self.subjek.npwp
def get_alamat_wp(self):
return self.subjek.jalan_wp
def get_alamat_op(self):
return self.objek.jalan_op
def get_kota_op(self):
pass
def get_kota_wp(self):
return self.subjek.kota_wp
def get_kelurahan_wp(self):
return self.subjek.kelurahan_wp
def get_kecamatan_wp(self):
return self.subjek.kecamatan_wp
def get_rt_wp(self):
return self.subjek.rt_wp
def get_rw_wp(self):
return self.subjek.rw_wp
def get_kode_pos_wp(self):
return self.subjek.kd_pos_wp
def get_identitas_wp(self):
return self.invoice.wp_identitas
def get_kelurahan_op(self):
return self.kelurahan and self.kelurahan.nm_kelurahan or None
def get_kecamatan_op(self):
return self.kecamatan and self.kecamatan.nm_kecamatan or None
def get_tahun(self):
return self.invoice.thn_bphtb
def get_jatuh_tempo(self):
pass
def get_payment_amount(self):
db_session = get_db_session()
q = db_session.query(
func.sum(Payment.bphtb_sdh_dibayar).
label('total_bayar'))
q = self.filter_invoice(q)
row = q.first()
return row.total_bayar or 0
def do_payment(self, ntb, user_bank='REKON'):
db_session = get_db_session()
ntp_generator = NTP()
ntp = ntp_generator.create()
self.update_status(self.tgl_bayar)
pay = Payment(
kd_propinsi=self.invoice.kd_propinsi,
kd_dati2=self.invoice.kd_dati2,
thn_bphtb=self.invoice.thn_bphtb,
bln_bphtb=self.invoice.bln_bphtb,
tgl_bphtb=self.invoice.tgl_bphtb,
no_urut_bphtb=self.invoice.no_urut_bphtb,
indeks_bphtb=self.invoice.indeks_bphtb,
# kd_pejabat = Column(String(4))
kd_bank_tunggal=self.conf['kd_bank_tunggal'],
kd_bank_persepsi=self.conf['kd_bank_persepsi'],
kd_tp=self.conf['kd_tp'],
tgl_pembayaran=self.tgl_bayar,
no_trans_bayar=ntp,
nama_wp=self.get_nama(),
bphtb_kurang_bayar=0,
bphtb_sdh_dibayar=self.total,
kd_kecamatan_op=self.objek.kd_kecamatan_op,
kd_kelurahan_op=self.objek.kd_kelurahan_op,
kd_blok_op=self.objek.kd_blok_op,
no_urut_op=self.objek.no_urut_op,
kd_jns_op=self.objek.kd_jns_op,
user_bank_rekam=user_bank,
nm_penyetor='ISOUSER01',
kd_sumber_data='4',
no_transaksi_byr_bank=ntb,
# iso_message_id = Column(Float,
# ForeignKey('iprotaxiso.iprotax_iso_msg_log.id_message_log'))
# tgl_rekon_bayar = Column(DateTime)
# no_transaksi_byr = Column(String(20))
tgl_rekam_byr=self.tgl_bayar)
db_session.add(pay)
db_session.flush()
return pay
def is_available(self):
return True
class Reversal(Common):
def __init__(self, invoice_id):
super().__init__(invoice_id)
self.payment = None
if not self.invoice:
return
self.payment = self.get_payment()
def do_reversal(self): # Override
db_session = get_db_session()
self.update_status(None)
q = self.query_invoice(Payment)
q.delete()
db_session.flush()
class AvailableInvoice(BaseAvailableInvoice):
def get_query(self):
db_session = get_db_session()
q = db_session.query(Invoice).filter(
Invoice.thn_bphtb == Objek.thn_bphtb,
Invoice.bln_bphtb == Objek.bln_bphtb,
Invoice.tgl_bphtb == Objek.tgl_bphtb,
Invoice.no_urut_bphtb == Objek.no_urut_bphtb,
Invoice.tgl_bayar_ssb_wp.__eq__(None))
if self.option.tahun:
q = q.filter_by(thn_bphtb=self.option.tahun)
if self.option.max_nominal:
q = q.filter(Invoice.bphtb_hrs_dibayar <= self.option.max_nominal)
if self.option.min_nominal:
q = q.filter(Invoice.bphtb_hrs_dibayar >= self.option.min_nominal)
return q.order_by(Invoice.tgl_rekam.desc())
def get_message(self, row):
invoice_id_struct = FixLength(INVOICE_ID)
invoice_id_struct['thn'] = row.thn_bphtb
invoice_id_struct['bln'] = row.bln_bphtb
invoice_id_struct['tgl'] = row.tgl_bphtb
invoice_id_struct['no_urut'] = row.no_urut_bphtb
invoice_id = invoice_id_struct.get_raw()
inq = Inquiry(invoice_id, self.conf)
if inq.total < 1:
return
total = thousand(inq.total).rjust(11)
return f'{invoice_id} Rp {total}'
INVOICE_ID = [
['thn', 4, 'N'],
['bln', 2, 'N'],
['tgl', 2, 'N'],
['no_urut', 4, 'N'],
]
INVOICE_ID_LENGTH = 0
for nama, size, tipe in INVOICE_ID:
INVOICE_ID_LENGTH += size
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!