Commit 9bc31a23 by Owo sugiana

Bug fixed perhitungan tagihan usai payment

1 parent b73cd66e
0.4.4 2022-09-05
----------------
- Bug fixed perhitungan tagihan usai payment
- Tambah Banjar
0.4.3 2022-08-04 0.4.3 2022-08-04
---------------- ----------------
- Discount denda untuk Tangerang Selatan - Discount denda untuk Tangerang Selatan
......
from datetime import datetime
from sqlalchemy import (
Column,
String,
Integer,
Float,
DateTime,
Date,
Text,
Boolean,
Time,
UniqueConstraint,
ForeignKey,
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import (
sessionmaker,
scoped_session,
)
Base = declarative_base()
class Kecamatan(Base):
__tablename__ = 'tblkecamatan'
id = Column(Integer, primary_key=True)
kecamatankd = Column(String(2), nullable=False, unique=True)
kecamatannm = Column(String(50))
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
__table_args__ = (
dict(schema='pad'),)
class Kelurahan(Base):
__tablename__ = 'tblkelurahan'
id = Column(Integer, primary_key=True)
kecamatan_id = Column(Integer, ForeignKey(Kecamatan.id), nullable=False)
kelurahankd = Column(String(3), nullable=False)
kelurahannm = Column(String(25))
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
__table_args__ = (
UniqueConstraint('kecamatan_id', 'kelurahankd'),
dict(schema='pad'))
class Rekening(Base):
__tablename__ = 'tblrekening'
id = Column(Integer, primary_key=True)
rekeningkd = Column(String(15), nullable=False, unique=True)
rekeningnm = Column(String(150))
levelid = Column(Integer)
issummary = Column(Integer, nullable=False)
defsign = Column(Integer)
isppkd = Column(Integer, nullable=False)
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
insidentil = Column(Integer)
__table_args__ = (
dict(schema='pad'),)
class Usaha(Base):
__tablename__ = 'pad_usaha'
id = Column(Integer, primary_key=True)
usahanm = Column(String(50), nullable=False)
so = Column(String(1))
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
__table_args__ = (
dict(schema='pad'),)
class Pajak(Base):
__tablename__ = 'pad_pajak'
id = Column(Integer, primary_key=True)
usaha_id = Column(Integer, ForeignKey(Usaha.id), nullable=False)
pajaknm = Column(String(100))
rekening_id = Column(Integer, ForeignKey(Rekening.id), nullable=False)
rekeningkdsub = Column(String(5))
rekdenda_id = Column(Integer)
masapajak = Column(Integer, nullable=False)
jatuhtempo = Column(Integer)
multiple = Column(Integer)
jalan_klas_id = Column(Integer)
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
__table_args__ = (
UniqueConstraint('rekening_id', 'rekeningkdsub'),
dict(schema='pad'))
# Wajib Pajak
class Customer(Base):
__tablename__ = 'pad_customer'
id = Column(Integer, primary_key=True)
parent = Column(Integer)
npwpd = Column(String(17))
rp = Column(String(1))
pb = Column(Integer)
formno = Column(Integer, nullable=False)
reg_date = Column(DateTime)
customernm = Column(String(50))
kecamatan_id = Column(Integer, ForeignKey(Kecamatan.id))
kelurahan_id = Column(Integer, ForeignKey(Kelurahan.id))
kabupaten = Column(String(25))
alamat = Column(String(200))
kodepos = Column(String(5))
telphone = Column(String(20))
wpnama = Column(String(50))
wpalamat = Column(String(200))
wpkelurahan = Column(String(25))
wpkecamatan = Column(String(25))
wpkabupaten = Column(String(25))
wptelp = Column(String(20))
wpkodepos = Column(String(5))
pnama = Column(String(50))
palamat = Column(String(200))
pkelurahan = Column(String(25))
pkecamatan = Column(String(25))
pkabupaten = Column(String(25))
ptelp = Column(String(20))
pkodepos = Column(String(5))
ijin1 = Column(String(100))
ijin1no = Column(String(100))
ijin1tgl = Column(DateTime)
ijin1tglakhir = Column(DateTime)
ijin2 = Column(String(100))
ijin2no = Column(String(100))
ijin2tgl = Column(DateTime)
ijin2tglakhir = Column(DateTime)
ijin3 = Column(String(100))
ijin3no = Column(String(100))
ijin3tgl = Column(DateTime)
ijin3tglakhir = Column(DateTime)
ijin4 = Column(String(100))
ijin4no = Column(String(100))
ijin4tgl = Column(DateTime)
ijin4tglakhir = Column(DateTime)
kukuhno = Column(String(30))
kukuhnip = Column(Integer)
kukuhtgl = Column(DateTime)
kukuh_jabat_id = Column(Integer)
kukuhprinted = Column(Integer)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
tmt = Column(DateTime)
customer_status_id = Column(Integer)
kembalitgl = Column(DateTime)
kembalioleh = Column(String(30))
kartuprinted = Column(Integer)
kembalinip = Column(Integer)
penerimanm = Column(String(50))
penerimaalamat = Column(String(50))
penerimatgl = Column(DateTime)
catatnip = Column(Integer)
kirimtgl = Column(DateTime)
batastgl = Column(DateTime)
petugas_jabat_id = Column(Integer)
pencatat_jabat_id = Column(Integer)
kd_restojmlmeja = Column(Integer)
kd_restojmlkursi = Column(Integer)
kd_restojmltamu = Column(Integer)
kd_filmkursi = Column(Integer)
kd_filmpertunjukan = Column(Integer)
kd_filmtarif = Column(Float)
kd_bilyarmeja = Column(Integer)
kd_bilyartarif = Column(Float)
kd_bilyarkegiatan = Column(Integer)
kd_diskopengunjung = Column(Integer)
kd_diskotarif = Column(Float)
kd_waletvolume = Column(Integer)
__table_args__ = (
UniqueConstraint('rp', 'pb', 'formno', 'kecamatan_id', 'kelurahan_id'),
dict(schema='pad'))
# Objek Pajak
class CustomerUsaha(Base):
__tablename__ = 'pad_customer_usaha'
id = Column(Integer, primary_key=True)
konterid = Column(Integer, nullable=False)
reg_date = Column(DateTime)
customer_id = Column(Integer, ForeignKey(Customer.id), nullable=False)
usaha_id = Column(Integer, ForeignKey(Usaha.id), nullable=False)
so = Column(String(1))
kecamatan_id = Column(Integer, ForeignKey(Kecamatan.id))
kelurahan_id = Column(Integer, ForeignKey(Kelurahan.id))
notes = Column(String(50))
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
customer_status_id = Column(Integer)
aktifnotes = Column(String(200))
tmt = Column(DateTime)
air_zona_id = Column(Integer)
air_manfaat_id = Column(Integer)
def_pajak_id = Column(Integer)
opnm = Column(String(100))
opalamat = Column(String(100))
latitude = Column(Float)
longitude = Column(Float)
__table_args__ = (
UniqueConstraint('konterid', 'customer_id', 'usaha_id'),
dict(schema='pad'))
class SptType(Base):
__tablename__ = 'pad_spt_type'
id = Column(Integer, primary_key=True)
typenm = Column(String(20), nullable=False)
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
__table_args__ = (
dict(schema='pad'),)
class Invoice(Base):
__tablename__ = 'pad_spt'
id = Column(Integer, primary_key=True)
sptpd_id = Column(Integer)
tahun = Column(Integer, nullable=False)
sptno = Column(Integer, nullable=False)
customer_id = Column(Integer, ForeignKey(Customer.id), nullable=False)
customer_usaha_id = Column(
Integer, ForeignKey(CustomerUsaha.id), nullable=False)
rekening_id = Column(Integer, ForeignKey(Rekening.id))
pajak_id = Column(Integer, ForeignKey(Pajak.id), nullable=False)
type_id = Column(Integer, ForeignKey(SptType.id))
so = Column(String(1), nullable=False)
masadari = Column(DateTime, nullable=False)
masasd = Column(DateTime, nullable=False)
jatuhtempotgl = Column(DateTime)
r_bayarid = Column(Integer)
minomset = Column(Float)
dasar = Column(Float, nullable=False)
tarif = Column(Float, nullable=False)
denda = Column(Float)
bunga = Column(Float, nullable=False)
setoran = Column(Float)
kenaikan = Column(Float, nullable=False)
kompensasi = Column(Float)
lain2 = Column(Float, nullable=False)
pajak_terhutang = Column(Integer, nullable=False)
air_manfaat_id = Column(Integer)
air_zona_id = Column(Integer)
meteran_awal = Column(Integer)
meteran_akhir = Column(Integer)
volume = Column(Integer)
satuan = Column(Text)
r_panjang = Column(Float)
r_lebar = Column(Float)
r_muka = Column(Float)
r_banyak = Column(Float)
r_luas = Column(Float)
r_tarifid = Column(Integer)
r_kontrak = Column(Float)
r_lama = Column(Integer)
r_jalan_id = Column(Integer)
r_jalanklas_id = Column(Integer)
r_lokasi = Column(String(250))
r_judul = Column(String(200))
r_kelurahan_id = Column(Integer)
r_lokasi_id = Column(Integer)
r_calculated = Column(Float)
r_nsr = Column(Float)
r_nsrno = Column(String(30))
r_nsrtgl = Column(DateTime)
r_nsl_kecamatan_id = Column(Integer)
r_nsl_type_id = Column(Integer)
r_nsl_nilai = Column(Float)
notes = Column(String(255))
unit_id = Column(Integer)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
terimanip = Column(String(50))
terimatgl = Column(DateTime, nullable=False)
kirimtgl = Column(DateTime)
isprint_dc = Column(Boolean)
r_nsr_id = Column(Integer)
r_lokasi_pasang_id = Column(Integer)
r_lokasi_pasang_val = Column(Float)
r_jalanklas_val = Column(Float)
r_sudut_pandang_id = Column(Integer)
r_sudut_pandang_val = Column(Float)
r_tinggi = Column(Float)
r_njop = Column(Float)
r_status = Column(String(20))
r_njop_ketinggian = Column(Float)
status_pembayaran = Column(Integer, nullable=False)
rek_no_paneng = Column(String(50))
sptno_lengkap = Column(String(20))
sptno_lama = Column(Integer)
r_nama = Column(String(100))
r_alamat = Column(String(255))
# m_tonase = Column(Float)
# m_njop = Column(Float)
__table_args__ = (
UniqueConstraint('tahun', 'sptno'),
UniqueConstraint('tahun', 'sptno', 'customer_usaha_id', 'masadari'),
dict(schema='pad'))
class Sptpd(Base):
__tablename__ = 'pad_sptpd'
id = Column(Integer, primary_key=True)
tahun = Column(Integer, nullable=False)
sptno = Column(Integer, nullable=False)
customer_id = Column(Integer, ForeignKey(Customer.id), nullable=False)
customer_usaha_id = Column(
Integer, ForeignKey(CustomerUsaha.id), nullable=False)
rekening_id = Column(Integer, ForeignKey(Rekening.id))
pajak_id = Column(Integer, ForeignKey(Pajak.id), nullable=False)
type_id = Column(Integer, ForeignKey(SptType.id))
so = Column(String(1), nullable=False)
masadari = Column(DateTime, nullable=False)
masasd = Column(DateTime, nullable=False)
jatuhtempotgl = Column(DateTime)
r_bayarid = Column(Integer)
minomset = Column(Float)
dasar = Column(Float, nullable=False)
tarif = Column(Float, nullable=False)
denda = Column(Float)
bunga = Column(Float, nullable=False)
setoran = Column(Float)
kenaikan = Column(Float, nullable=False)
kompensasi = Column(Float)
lain2 = Column(Float, nullable=False)
pajak_terhutang = Column(Integer, nullable=False)
air_manfaat_id = Column(Integer)
air_zona_id = Column(Integer)
meteran_awal = Column(Integer)
meteran_akhir = Column(Integer)
volume = Column(Integer)
satuan = Column(Text)
r_panjang = Column(Float)
r_lebar = Column(Float)
r_muka = Column(Float)
r_banyak = Column(Float)
r_luas = Column(Float)
r_tarifid = Column(Integer)
r_kontrak = Column(Float)
r_lama_reklame = Column(Integer)
r_jalan_id = Column(Integer)
r_jalanklas_id = Column(Integer)
r_lokasi = Column(String(250))
r_judul = Column(String(200))
r_kelurahan_id = Column(Integer)
r_lokasi_id = Column(Integer)
r_calculated = Column(Float)
r_nsr = Column(Float)
r_nsrno = Column(String(30))
r_nsrtgl = Column(DateTime)
r_nsl_kecamatan_id = Column(Integer)
r_nsl_type_id = Column(Integer)
r_nsl_nilai = Column(Float)
notes = Column(String(255))
unit_id = Column(Integer)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
terimanip = Column(String(50))
terimatgl = Column(DateTime, nullable=False)
kirimtgl = Column(DateTime)
isprint_dc = Column(Boolean)
r_nsr_id = Column(Integer)
r_lokasi_pasang_id = Column(Integer)
r_lokasi_pasang_val = Column(Float)
r_jalanklas_val = Column(Float)
r_sudut_pandang_id = Column(Integer)
r_sudut_pandang_val = Column(Float)
r_tinggi = Column(Float)
r_njop = Column(Float)
r_status = Column(String(20))
r_njop_ketinggian = Column(Float)
status_pembayaran = Column(Integer, nullable=False)
rek_no_paneng = Column(String(50))
sptno_lengkap = Column(String(20))
sptno_lama = Column(Integer)
r_nama = Column(String(100))
r_alamat = Column(String(255))
masa_bln = Column(Integer)
masa_thn = Column(Integer)
setorankd = Column(Integer)
setorannm = Column(String(30))
status_dok = Column(Integer)
file1 = Column(String(250))
file2 = Column(String(250))
file3 = Column(String(250))
file4 = Column(String(250))
file5 = Column(String(250))
dasar_yg_sdh_dibayar = Column(Integer)
dasar_yg_blm_dibayar = Column(Integer)
status_penelitian = Column(Integer)
hasil_penelitian = Column(String(20))
r_jenis_produk_reklame_id = Column(Integer)
r_status_reklame_id = Column(Integer)
r_letak_reklame_id = Column(Integer)
tp_id = Column(Integer)
at_npa_total = Column(Integer)
r_nilai_kontrak = Column(Integer)
at_titik = Column(Integer)
at_npa_normal = Column(Integer)
at_npa_kelebihan = Column(Integer)
at_tanggal_approval = Column(Date)
at_status_approval = Column(Integer)
__table_args__ = (
UniqueConstraint(tahun, sptno),
dict(schema='pad'))
class Kohir(Base):
__tablename__ = 'pad_kohir'
id = Column(Integer, primary_key=True)
tahun = Column(Integer, nullable=False)
usaha_id = Column(Integer)
kohirno = Column(Integer, nullable=False)
kohirtgl = Column(DateTime, nullable=False)
sptpd_id = Column(Integer, nullable=False)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
is_cancel = Column(Integer)
bap_no = Column(Text)
bap_date = Column(DateTime)
cancel_no = Column(Integer)
cancel_date = Column(DateTime)
cancel_uid = Column(Integer)
posted = Column(Integer, nullable=False)
posting_simda = Column(Integer)
__table_args__ = (
UniqueConstraint(tahun, kohirno, usaha_id),
dict(schema='pad'))
class Payment(Base):
__tablename__ = 'pad_sspd'
id = Column(Integer, primary_key=True)
tahun = Column(Integer, nullable=False)
sspdno = Column(Integer, nullable=False)
sspdtgl = Column(DateTime, nullable=False)
spt_id = Column(Integer, ForeignKey(Invoice.id), nullable=False)
bunga = Column(Float)
bulan_telat = Column(Integer)
hitung_bunga = Column(Integer)
printed = Column(Integer)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
sspdjam = Column(Time)
tp_id = Column(Integer)
is_validated = Column(Integer)
keterangan = Column(String(255))
denda = Column(Integer)
jml_bayar = Column(Integer)
is_valid = Column(Integer)
__table_args__ = (
UniqueConstraint('tahun', 'sspdno'),
dict(schema='pad'))
# Jalur transaksi bank
class Channel(Base):
__tablename__ = 'pad_channel'
id = Column(Integer, primary_key=True)
nama = Column(String(20), nullable=False, unique=True)
class Bank(Base):
__tablename__ = 'pad_tp'
id = Column(Integer, primary_key=True)
singkatan = Column(String(16), nullable=False, unique=True)
nama = Column(String(32), nullable=False, unique=True)
class IsoPayment(Base):
__tablename__ = 'pad_payment'
id = Column(Integer, ForeignKey(Payment.id), primary_key=True)
tgl = Column(DateTime(timezone=True), nullable=False, default=datetime.now)
iso_request = Column(String(1024), nullable=False)
transmission = Column(DateTime(timezone=True), nullable=False)
settlement = Column(Date, nullable=False)
stan = Column(Integer, nullable=False)
invoice_id = Column(Integer, ForeignKey(Invoice.id), nullable=False)
ntb = Column(String(32), nullable=False)
ntp = Column(String(32), nullable=False, unique=True)
bank_id = Column(Integer, ForeignKey(Bank.id), nullable=False)
channel_id = Column(Integer, ForeignKey(Channel.id), nullable=False)
bank_ip = Column(String(15), nullable=False)
class IsoReversal(Base):
__tablename__ = 'pad_reversal'
id = Column(Integer, ForeignKey(IsoPayment.id), primary_key=True)
tgl = Column(DateTime(timezone=True), nullable=False, default=datetime.now)
iso_request = Column(String(1024), nullable=False)
from .base import get_db_session
from .default import (
Inquiry as BaseInquiry,
Reversal as BaseReversal,
AvailableInvoice as BaseAvailableInvoice,
)
from ..models.banjar import (
Invoice,
Kohir,
)
class Inquiry(BaseInquiry):
def get_invoice_model(self): # Override
return Invoice
def get_kohir_model(self): # Override
return Kohir
def get_kohir(self): # Override
DBSession = get_db_session()
Kohir = self.get_kohir_model()
q = DBSession.query(Kohir).filter_by(sptpd_id=self.invoice.sptpd_id)
q = q.order_by(Kohir.id.desc())
return q.first()
class Reversal(BaseReversal):
def get_invoice_model(self): # Override
return Invoice
class AvailableInvoice(BaseAvailableInvoice):
def get_inquiry_class(self): # Override
return Inquiry
...@@ -301,10 +301,13 @@ class Inquiry(BaseInquiry): ...@@ -301,10 +301,13 @@ class Inquiry(BaseInquiry):
if self.get_type_name().strip() == 'STPD': if self.get_type_name().strip() == 'STPD':
self.denda = round_up(self.invoice.bunga) self.denda = round_up(self.invoice.bunga)
elif self.invoice.jatuhtempotgl: elif self.invoice.jatuhtempotgl:
self.bln_tunggakan, self.denda_waktu = hitung_denda( if self.invoice.status_pembayaran == 0:
self.tagihan, self.invoice.jatuhtempotgl, self.bln_tunggakan, self.denda_waktu = hitung_denda(
self.conf['persen_denda'], self.tagihan, self.invoice.jatuhtempotgl,
self.tgl_bayar.date()) self.conf['persen_denda'],
self.tgl_bayar.date())
else:
self.bln_tunggakan = self.denda_waktu = 0
self.denda = self.denda_waktu + self.invoice.bunga self.denda = self.denda_waktu + self.invoice.bunga
self.denda = round_up(self.denda) self.denda = round_up(self.denda)
self.discount_denda = self.get_discount_denda() self.discount_denda = self.get_discount_denda()
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!