Commit 5c3ace01 by Owo Sugiana

Tambah tangsel

1 parent 28277c09
*egg-info
build build
dist
*egg-info
test-*.ini test-*.ini
0.2 2020-07-15
--------------
- File konfigurasi wajib ada baris module
- Modul default adalah struktur Kabupaten Tangerang
- Tambah modul tangsel
0.1 2020-05-06 0.1 2020-05-06
-------------- --------------
- Kali pertama - Kali pertama
[main] [main]
module = default
db_url = postgresql://user:pass@localhost/db db_url = postgresql://user:pass@localhost/db
persen_denda = 2 persen_denda = 2
#rekening_notes = #rekening_notes =
...@@ -195,9 +195,6 @@ class Customer(Base): ...@@ -195,9 +195,6 @@ class Customer(Base):
kd_diskopengunjung = Column(Integer) kd_diskopengunjung = Column(Integer)
kd_diskotarif = Column(Float) kd_diskotarif = Column(Float)
kd_waletvolume = Column(Integer) kd_waletvolume = Column(Integer)
#formno_old = Column(Integer)
#ket = Column(String(50))
#npwpd_ori = Column(String(20))
__table_args__ = ( __table_args__ = (
UniqueConstraint('rp', 'pb', 'formno', 'kecamatan_id', 'kelurahan_id'), UniqueConstraint('rp', 'pb', 'formno', 'kecamatan_id', 'kelurahan_id'),
dict(schema='pad')) dict(schema='pad'))
...@@ -255,7 +252,8 @@ class Invoice(Base): ...@@ -255,7 +252,8 @@ class Invoice(Base):
tahun = Column(Integer, nullable=False) tahun = Column(Integer, nullable=False)
sptno = Column(Integer, nullable=False) sptno = Column(Integer, nullable=False)
customer_id = Column(Integer, ForeignKey(Customer.id), nullable=False) customer_id = Column(Integer, ForeignKey(Customer.id), nullable=False)
customer_usaha_id = Column(Integer, ForeignKey(CustomerUsaha.id), nullable=False) customer_usaha_id = Column(
Integer, ForeignKey(CustomerUsaha.id), nullable=False)
rekening_id = Column(Integer, ForeignKey(Rekening.id)) rekening_id = Column(Integer, ForeignKey(Rekening.id))
pajak_id = Column(Integer, ForeignKey(Pajak.id), nullable=False) pajak_id = Column(Integer, ForeignKey(Pajak.id), nullable=False)
type_id = Column(Integer, ForeignKey(SptType.id)) type_id = Column(Integer, ForeignKey(SptType.id))
...@@ -330,9 +328,6 @@ class Invoice(Base): ...@@ -330,9 +328,6 @@ class Invoice(Base):
r_alamat = Column(String(255)) r_alamat = Column(String(255))
m_tonase = Column(Float) m_tonase = Column(Float)
m_njop = Column(Float) m_njop = Column(Float)
#r_njop_lain = Column(Float)
#r_kecamatan_id = Column(Integer)
#printed_kd = Column(Integer)
__table_args__ = ( __table_args__ = (
UniqueConstraint('tahun', 'sptno'), UniqueConstraint('tahun', 'sptno'),
UniqueConstraint('tahun', 'sptno', 'customer_usaha_id', 'masadari'), UniqueConstraint('tahun', 'sptno', 'customer_usaha_id', 'masadari'),
...@@ -362,11 +357,6 @@ class Payment(Base): ...@@ -362,11 +357,6 @@ class Payment(Base):
denda = Column(Integer) denda = Column(Integer)
jml_bayar = Column(Integer) jml_bayar = Column(Integer)
is_valid = Column(Integer) is_valid = Column(Integer)
#cancel_jml_bayar = Column(Integer)
#cancel_bunga = Column(Integer)
#cancel_denda = Column(Integer)
#cancel_date = Column(DateTime)
#cancel_uid = Column(Integer)
__table_args__ = ( __table_args__ = (
UniqueConstraint('tahun', 'sspdno'), UniqueConstraint('tahun', 'sspdno'),
dict(schema='pad')) dict(schema='pad'))
......
from datetime import datetime
from sqlalchemy import (
Column,
String,
Integer,
DateTime,
Date,
Text,
Float,
Boolean,
ForeignKey,
UniqueConstraint,
)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Kecamatan(Base):
__tablename__ = 'tblkecamatan'
kecamatankd = Column(String(2), nullable=False, unique=True)
kecamatannm = Column(String(50))
id = Column(Integer, primary_key=True)
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
class Kelurahan(Base):
__tablename__ = 'tblkelurahan'
kecamatan_id = Column(Integer, ForeignKey(Kecamatan.id), nullable=False)
kelurahankd = Column(String(3), nullable=False)
kelurahannm = Column(String(25))
id = Column(Integer, primary_key=True)
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'),)
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)
class Usaha(Base):
__tablename__ = 'pad_usaha'
id = Column(Integer, primary_key=True)
usahanm = Column(String(50), nullable=False)
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
so = Column(String(1))
class Pajak(Base):
__tablename__ = 'pad_pajak'
pajaknm = Column(String(100))
jatuhtempo = Column(Integer)
carahitung = Column(Integer)
rekening_id = Column(Integer, ForeignKey(Rekening.id), nullable=False)
rekeningkdsub = Column(String(5))
usaha_id = Column(Integer, nullable=False)
rekdenda_id = Column(Integer, ForeignKey(Rekening.id))
id = Column(Integer, primary_key=True)
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
multiple = Column(Integer)
masapajak = Column(Integer, nullable=False)
jalan_klas_id = Column(Integer)
jenis_reklame_id = Column(Integer)
sudut_pandang_id = Column(Integer)
__table_args__ = (
UniqueConstraint('rekening_id', 'rekeningkdsub'),)
class CustomerStatus(Base):
__tablename__ = 'pad_customer_status'
id = Column(Integer, primary_key=True)
statusnm = Column(String(15))
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
# Wajib Pajak
class Customer(Base):
__tablename__ = 'pad_customer'
rp = Column(String(1))
pb = Column(Integer)
formno = Column(Integer, nullable=False)
reg_date = Column(DateTime)
reg_kelurahan_id = Column(Integer, ForeignKey(Kelurahan.id))
customernm = Column(String(50))
alamat = Column(String(1000))
kelurahan_id = Column(Integer, ForeignKey(Kelurahan.id))
kabupaten = Column(String(25))
telphone = Column(String(20))
kodepos = Column(String(5))
ijin1 = Column(String(100))
ijin1no = Column(String(100))
ijin1tgl = Column(DateTime)
ijin2 = Column(String(100))
ijin2no = Column(String(100))
ijin2tgl = Column(DateTime)
ijin3 = Column(String(100))
ijin3no = Column(String(100))
ijin3tgl = Column(DateTime)
ijin4 = Column(String(100))
ijin4no = Column(String(100))
ijin4tgl = Column(DateTime)
customer_status_id = Column(Integer, ForeignKey(CustomerStatus.id))
kirimtgl = Column(DateTime)
batastgl = Column(DateTime)
penerimanm = Column(String(50))
penerimaalamat = Column(String(50))
penerimatgl = Column(DateTime)
wpnama = Column(String(50))
wpalamat = Column(String(1000))
wpkelurahan = Column(String(25))
wpkecamatan = Column(String(25))
wpkabupaten = Column(String(25))
wptelp = Column(String(20))
wpkodepos = Column(String(5))
kembalitgl = Column(DateTime)
kembalioleh = Column(String(30))
kukuhno = Column(String(30))
kukuhtgl = Column(DateTime)
kukuhprinted = Column(Integer)
kartuprinted = Column(Integer)
id = Column(Integer, primary_key=True)
tmt = Column(DateTime)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
kukuhnip = Column(Integer)
kembalinip = Column(Integer)
catatnip = Column(Integer)
kukuh_jabat_id = Column(Integer)
petugas_jabat_id = Column(Integer)
pencatat_jabat_id = Column(Integer)
pnama = Column(String(50))
palamat = Column(String(1000))
pkelurahan = Column(String(25))
pkecamatan = Column(String(25))
pkabupaten = Column(String(25))
ptelp = Column(String(20))
pkodepos = Column(String(5))
parent = Column(Integer)
npwpd = Column(String(17))
kecamatan_id = Column(Integer)
ijin1tglakhir = Column(DateTime)
ijin2tglakhir = Column(DateTime)
ijin3tglakhir = Column(DateTime)
ijin4tglakhir = Column(DateTime)
notes = Column(Text)
daftar_id = Column(Integer)
npwp = Column(String(30))
__table_args__ = (
UniqueConstraint('rp', 'pb', 'formno', 'kelurahan_id'),)
# Objek Pajak
class CustomerUsaha(Base):
__tablename__ = 'pad_customer_usaha'
customer_id = Column(Integer, ForeignKey(Customer.id), nullable=False)
usaha_id = Column(Integer, ForeignKey(Usaha.id), nullable=False)
konterid = Column(Integer, nullable=False)
kelurahan_id = Column(Integer, ForeignKey(Kelurahan.id))
notes = Column(Text)
so = Column(String(1))
reg_date = Column(DateTime)
reg_kelurahan_id = Column(Integer)
customer_status_id = Column(Integer)
aktifnotes = Column(String(200))
tmt = Column(DateTime)
id = Column(Integer, primary_key=True)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
air_zona_id = Column(Integer)
air_manfaat_id = Column(Integer)
newkelid = Column(Integer)
kecamatan_id = Column(Integer)
def_pajak_id = Column(Integer)
npwpd_lama = Column(String(17))
opnm = Column(Text)
opalamat = Column(Text)
latitude = Column(Float)
longitude = Column(Float)
no_telp = Column(Text)
def_pajak_id_ori = Column(Integer)
__table_args__ = (
UniqueConstraint('customer_id', 'usaha_id', 'konterid'),)
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)
class Invoice(Base):
__tablename__ = 'pad_spt'
id = Column(Integer, primary_key=True)
customer_usaha_id = Column(
Integer, ForeignKey(CustomerUsaha.id), nullable=False)
pajak_id = Column(Integer, ForeignKey(Pajak.id), nullable=False)
tahun = Column(Integer, nullable=False)
sptno = Column(Integer, nullable=False)
terimanip = Column(String(50))
terimatgl = Column(DateTime, nullable=False)
kirimtgl = Column(DateTime)
jatuhtempotgl = Column(DateTime)
type_id = Column(Integer, ForeignKey(SptType.id))
so = Column(String(1), nullable=False)
masadari = Column(DateTime, nullable=False)
masasd = Column(DateTime, nullable=False)
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)
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_nsr = Column(Float)
r_nsrno = Column(String(30))
r_nsrtgl = Column(DateTime)
r_bayarid = Column(Integer)
r_tarifid = Column(Integer)
r_kontrak = Column(Float)
r_lama = Column(Integer)
r_jalanklas_id = Column(Integer)
r_jalan_id = Column(Integer)
r_lokasi = Column(String(250))
r_judul = Column(String(200))
r_panjang = Column(Float)
r_lebar = Column(Float)
r_muka = Column(Float)
r_banyak = Column(Float)
r_luas = Column(Float)
enabled = Column(Integer)
unit_id = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
customer_id = Column(Integer, nullable=False)
r_nsl_kecamatan_id = Column(Integer)
r_nsl_type_id = Column(Integer)
r_nsl_nilai = Column(Float)
r_kelurahan_id = Column(Integer)
isprint_dc = Column(Boolean)
notes = Column(String(255))
r_lokasi_id = Column(Integer)
rekening_id = Column(Integer)
no_skpd_lama = Column(String(50))
r_calculated = Column(Float)
h2h_ready = Column(Integer)
pajak_terhutang = Column(Integer)
status_pembayaran = Column(Integer)
handphone = Column(String(20))
merek = Column(String(50))
r_tinggi = Column(Float)
posted = Column(Integer)
r_permohonan_id = Column(Integer)
r_permohonan_no = Column(Text)
r_permohonan_tgl = Column(DateTime)
file1 = Column(String(250))
file2 = Column(String(250))
file3 = Column(String(250))
file4 = Column(String(250))
file5 = Column(String(250))
r_nama = Column(String(50))
is_entry = Column(Integer)
notes_entry = Column(String(50))
__table_args__ = (
UniqueConstraint('tahun', 'sptno'),)
class Payment(Base):
__tablename__ = 'pad_sspd'
tahun = Column(Integer, nullable=False)
sspdno = Column(Integer, nullable=False)
spt_id = Column(Integer, ForeignKey(Invoice.id), nullable=False)
printed = Column(Integer, nullable=False)
sspdtgl = Column(DateTime, nullable=False)
denda = Column(Float, nullable=False)
id = Column(Integer, primary_key=True)
enabled = Column(Integer)
create_date = Column(DateTime)
create_uid = Column(Integer)
write_date = Column(DateTime)
write_uid = Column(Integer)
bunga = Column(Float)
h2h_ready = Column(Integer)
jml_bayar = Column(Integer)
is_valid = Column(Integer)
is_inject = Column(Integer)
posted = Column(Integer)
__table_args__ = (
UniqueConstraint('tahun', 'sspdno'),)
# 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, primary_key=True)
sspd_id = Column(Integer, nullable=False)
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_no = Column(String(32), 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)
invoice_id = Column(Integer)
class IsoReversal(Base):
__tablename__ = 'pad_reversal'
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)
...@@ -26,12 +26,14 @@ def main(argv=sys.argv): ...@@ -26,12 +26,14 @@ def main(argv=sys.argv):
option = get_option(argv[1:]) option = get_option(argv[1:])
conf = ConfigParser() conf = ConfigParser()
conf.read(option.conf) conf.read(option.conf)
module = __import__('opensipkd.pad.services') module_name = conf.get('main', 'module')
AvailableInvoice = module.pad.services.AvailableInvoice module = __import__('opensipkd.pad.services.' + module_name)
services = getattr(module.pad.services, module_name)
AvailableInvoice = services.AvailableInvoice
db_url = conf.get('main', 'db_url') db_url = conf.get('main', 'db_url')
persen_denda = conf.getfloat('main', 'persen_denda') persen_denda = conf.getfloat('main', 'persen_denda')
engine = create_engine(db_url) engine = create_engine(db_url)
session_factory = sessionmaker(bind=engine) session_factory = sessionmaker(bind=engine)
module.pad.services.DBSession = session_factory() module.pad.services.base.DBSession = session_factory()
a = AvailableInvoice(persen_denda, option) a = AvailableInvoice(persen_denda, option)
a.show() a.show()
...@@ -9,6 +9,10 @@ from zope.sqlalchemy import register ...@@ -9,6 +9,10 @@ from zope.sqlalchemy import register
from opensipkd.string.money import thousand from opensipkd.string.money import thousand
ERR_PAYMENT_NOT_FOUND = 'Pembayaran tidak ditemukan, '\
'tidak ada yang perlu dibatalkan.'
def show_val(label, value): def show_val(label, value):
print('{}: {}'.format(label, value or '')) print('{}: {}'.format(label, value or ''))
...@@ -69,18 +73,19 @@ def main(argv=sys.argv): ...@@ -69,18 +73,19 @@ def main(argv=sys.argv):
invoice_id = option.invoice_id invoice_id = option.invoice_id
conf = ConfigParser() conf = ConfigParser()
conf.read(conf_file) conf.read(conf_file)
module_name = conf.get('main', 'module')
db_url = conf.get('main', 'db_url') db_url = conf.get('main', 'db_url')
rekening_notes = read_list_conf(conf, 'rekening_notes') rekening_notes = read_list_conf(conf, 'rekening_notes')
engine = create_engine(db_url) engine = create_engine(db_url)
module = __import__('opensipkd.pad.services') module = __import__('opensipkd.pad.services.' + module_name)
services = getattr(module.pad.services, module_name)
session_factory = sessionmaker(bind=engine) session_factory = sessionmaker(bind=engine)
module.pad.services.DBSession = session_factory() module.pad.services.base.DBSession = session_factory()
register(module.pad.services.DBSession) register(module.pad.services.base.DBSession)
inq = module.pad.services.Inquiry( inq = services.Inquiry(
invoice_id, rekening_notes, conf.getfloat('main', 'persen_denda')) invoice_id, rekening_notes, conf.getfloat('main', 'persen_denda'))
if not inq.invoice: if not inq.invoice:
print('Invoice ID {} tidak ada.'.format(invoice_id)) error('Invoice ID {} tidak ada.'.format(invoice_id))
return
show(inq) show(inq)
if option.payment: if option.payment:
if not inq.total: if not inq.total:
...@@ -91,12 +96,12 @@ def main(argv=sys.argv): ...@@ -91,12 +96,12 @@ def main(argv=sys.argv):
show_pkey_values(pay) show_pkey_values(pay)
print('Berhasil dibayar') print('Berhasil dibayar')
if option.reversal: if option.reversal:
rev = module.pad.services.Reversal(invoice_id) rev = services.Reversal(invoice_id)
if rev.is_available(): if rev.is_available():
error('Memang belum dibayar') error('Memang belum dibayar')
pay = rev.payment pay = rev.payment
if not pay: if not pay:
error('Pembayaran tidak ditemukan, tidak ada yang perlu dibatalkan.') error(ERR_PAYMENT_NOT_FOUND)
with transaction.manager: with transaction.manager:
rev.do_reversal() rev.do_reversal()
show_pkey_values(pay) show_pkey_values(pay)
......
DBSession = None # Diisi saat init
def get_db_session():
return DBSession
...@@ -12,7 +12,7 @@ from opensipkd.hitung import ( ...@@ -12,7 +12,7 @@ from opensipkd.hitung import (
) )
from opensipkd.string import FixLength from opensipkd.string import FixLength
from opensipkd.string.money import thousand from opensipkd.string.money import thousand
from .models import ( from opensipkd.pad.models.default import (
Kecamatan, Kecamatan,
Kelurahan, Kelurahan,
Customer, Customer,
...@@ -21,14 +21,9 @@ from .models import ( ...@@ -21,14 +21,9 @@ from .models import (
Payment, Payment,
Pajak, Pajak,
Rekening, Rekening,
Usaha,
) )
from ..base import get_db_session
DBSession = None # Override, please
def get_db_session():
return DBSession
INVOICE_ID = [ INVOICE_ID = [
...@@ -45,38 +40,79 @@ class BaseInquiry: ...@@ -45,38 +40,79 @@ class BaseInquiry:
if not self.invoice_id['SptNo']: if not self.invoice_id['SptNo']:
return return
self.rekening_notes = rekening_notes self.rekening_notes = rekening_notes
Invoice = self.get_invoice_model()
DBSession = get_db_session()
q = DBSession.query(Invoice).filter_by( q = DBSession.query(Invoice).filter_by(
tahun=self.invoice_id['Tahun'], sptno=self.invoice_id['SptNo']) tahun=self.invoice_id['Tahun'], sptno=self.invoice_id['SptNo'])
self.invoice = q.first() self.invoice = q.first()
def get_kecamatan_model(self):
return Kecamatan
def get_kelurahan_model(self):
return Kelurahan
def get_customer_model(self):
return Customer
def get_usaha_model(self):
return Usaha
def get_customer_usaha_model(self):
return CustomerUsaha
def get_rekening_model(self):
return Rekening
def get_pajak_model(self):
return Pajak
def get_invoice_model(self):
return Invoice
def get_payment_model(self):
return Payment
def is_available(self): def is_available(self):
return self.invoice.status_pembayaran == 0 return self.invoice.status_pembayaran == 0
def get_objek_pajak(self): def get_objek_pajak(self):
CustomerUsaha = self.get_customer_usaha_model()
DBSession = get_db_session()
q = DBSession.query(CustomerUsaha).filter_by( q = DBSession.query(CustomerUsaha).filter_by(
id=self.invoice.customer_usaha_id) id=self.invoice.customer_usaha_id)
return q.first() return q.first()
def get_wajib_pajak(self): def get_wajib_pajak(self):
Customer = self.get_customer_model()
DBSession = get_db_session()
q = DBSession.query(Customer).filter_by( q = DBSession.query(Customer).filter_by(
id=self.objek_pajak.customer_id) id=self.objek_pajak.customer_id)
return q.first() return q.first()
def get_kelurahan(self): def get_kelurahan(self):
Kelurahan = self.get_kelurahan_model()
DBSession = get_db_session()
q = DBSession.query(Kelurahan).filter_by( q = DBSession.query(Kelurahan).filter_by(
id=self.objek_pajak.kelurahan_id) id=self.objek_pajak.kelurahan_id)
return q.first() return q.first()
def get_kecamatan(self): def get_kecamatan(self):
Kecamatan = self.get_kecamatan_model()
DBSession = get_db_session()
q = DBSession.query(Kecamatan).filter_by( q = DBSession.query(Kecamatan).filter_by(
id=self.objek_pajak.kecamatan_id) id=self.objek_pajak.kecamatan_id)
return q.first() return q.first()
def get_pajak(self): def get_pajak(self):
Pajak = self.get_pajak_model()
DBSession = get_db_session()
q = DBSession.query(Pajak).filter_by(id=self.invoice.pajak_id) q = DBSession.query(Pajak).filter_by(id=self.invoice.pajak_id)
return q.first() return q.first()
def get_rekening(self): def get_rekening(self):
Rekening = self.get_rekening_model()
DBSession = get_db_session()
q = DBSession.query(Rekening).filter_by(id=self.pajak.rekening_id) q = DBSession.query(Rekening).filter_by(id=self.pajak.rekening_id)
return q.first() return q.first()
...@@ -153,7 +189,7 @@ class Inquiry(BaseInquiry): ...@@ -153,7 +189,7 @@ class Inquiry(BaseInquiry):
def __init__( def __init__(
self, invoice_id, rekening_notes=[], persen_denda=2, self, invoice_id, rekening_notes=[], persen_denda=2,
tgl_bayar=None): tgl_bayar=None):
BaseInquiry.__init__(self, invoice_id, rekening_notes) super().__init__(invoice_id, rekening_notes)
if not self.invoice: if not self.invoice:
return return
self.tgl_bayar = tgl_bayar or datetime.now() self.tgl_bayar = tgl_bayar or datetime.now()
...@@ -162,6 +198,8 @@ class Inquiry(BaseInquiry): ...@@ -162,6 +198,8 @@ class Inquiry(BaseInquiry):
self.hitung() self.hitung()
def get_payment_amount(self): def get_payment_amount(self):
Payment = self.get_payment_model()
DBSession = get_db_session()
q = DBSession.query(func.sum(Payment.jml_bayar).label('jml')) q = DBSession.query(func.sum(Payment.jml_bayar).label('jml'))
q = q.filter_by(spt_id=self.invoice.id) q = q.filter_by(spt_id=self.invoice.id)
pay = q.first() pay = q.first()
...@@ -188,6 +226,8 @@ class Inquiry(BaseInquiry): ...@@ -188,6 +226,8 @@ class Inquiry(BaseInquiry):
self.total += self.denda self.total += self.denda
def get_pay_seq(self): def get_pay_seq(self):
Payment = self.get_payment_model()
DBSession = get_db_session()
q = DBSession.query(Payment).filter_by(tahun=self.invoice.tahun) q = DBSession.query(Payment).filter_by(tahun=self.invoice.tahun)
q = q.order_by(Payment.sspdno.desc()) q = q.order_by(Payment.sspdno.desc())
pay = q.first() pay = q.first()
...@@ -196,6 +236,7 @@ class Inquiry(BaseInquiry): ...@@ -196,6 +236,7 @@ class Inquiry(BaseInquiry):
return 1 return 1
def do_payment(self, ntb): def do_payment(self, ntb):
Payment = self.get_payment_model()
sspdno = self.get_pay_seq() sspdno = self.get_pay_seq()
pay = Payment() pay = Payment()
pay.tahun = self.invoice.tahun pay.tahun = self.invoice.tahun
...@@ -207,6 +248,7 @@ class Inquiry(BaseInquiry): ...@@ -207,6 +248,7 @@ class Inquiry(BaseInquiry):
pay.sspdtgl = self.tgl_bayar pay.sspdtgl = self.tgl_bayar
pay.printed = pay.enabled = 1 pay.printed = pay.enabled = 1
self.invoice.status_pembayaran = 1 self.invoice.status_pembayaran = 1
DBSession = get_db_session()
DBSession.add(pay) DBSession.add(pay)
DBSession.add(self.invoice) DBSession.add(self.invoice)
DBSession.flush() DBSession.flush()
...@@ -216,12 +258,11 @@ class Inquiry(BaseInquiry): ...@@ -216,12 +258,11 @@ class Inquiry(BaseInquiry):
class Reversal(BaseInquiry): class Reversal(BaseInquiry):
def __init__(self, invoice_id): def __init__(self, invoice_id):
BaseInquiry.__init__(self, invoice_id) BaseInquiry.__init__(self, invoice_id)
if not self.invoice: if self.invoice:
return
self.set_profile()
self.payment = self.get_payment() self.payment = self.get_payment()
def do_reversal(self): def do_reversal(self):
DBSession = get_db_session()
if self.payment: if self.payment:
self.payment.jml_bayar = self.payment.denda = \ self.payment.jml_bayar = self.payment.denda = \
self.payment.bunga = 0 self.payment.bunga = 0
...@@ -232,6 +273,8 @@ class Reversal(BaseInquiry): ...@@ -232,6 +273,8 @@ class Reversal(BaseInquiry):
DBSession.flush() DBSession.flush()
def get_payment(self): def get_payment(self):
Payment = self.get_payment_model()
DBSession = get_db_session()
q = DBSession.query(Payment).filter_by(spt_id=self.invoice.id) q = DBSession.query(Payment).filter_by(spt_id=self.invoice.id)
q = q.order_by(Payment.id.desc()) q = q.order_by(Payment.id.desc())
return q.first() return q.first()
...@@ -265,25 +308,52 @@ class AvailableInvoice: ...@@ -265,25 +308,52 @@ class AvailableInvoice:
if count == self.option.count: if count == self.option.count:
break break
def get_invoice_model(self):
return Invoice
def get_pajak_model(self):
return Pajak
def get_rekening_model(self):
return Rekening
def get_usaha_model(self):
return Usaha
def get_customer_usaha_model(self):
return CustomerUsaha
def get_inquiry_class(self):
return Inquiry
def get_query(self): def get_query(self):
Invoice = self.get_invoice_model()
Pajak = self.get_pajak_model()
Rekening = self.get_rekening_model()
Usaha = self.get_usaha_model()
CustomerUsaha = self.get_customer_usaha_model()
DBSession = get_db_session()
q = DBSession.query( q = DBSession.query(
Invoice.sptno, Invoice.tahun, Rekening.rekeningkd, Invoice.sptno, Invoice.tahun, Rekening.rekeningkd,
Rekening.rekeningnm) Rekening.rekeningnm)
q = q.filter( q = q.filter(
Invoice.pajak_id==Pajak.id, Pajak.rekening_id==Rekening.id, Invoice.pajak_id == Pajak.id, Pajak.rekening_id == Rekening.id,
Invoice.status_pembayaran==0) Invoice.customer_usaha_id == CustomerUsaha.id,
CustomerUsaha.usaha_id == Usaha.id,
Invoice.status_pembayaran == 0)
if self.option.jenis: if self.option.jenis:
pola = '%{}%'.format(self.option.jenis) pola = '%{}%'.format(self.option.jenis)
q = q.filter(Rekening.rekeningnm.ilike(pola)) q = q.filter(Usaha.usahanm.ilike(pola))
return q return q
def get_message(self, row): def get_message(self, row):
invoice_id = FixLength(INVOICE_ID) invoice_id = FixLength(INVOICE_ID)
invoice_id['Tahun'] = row.tahun invoice_id['Tahun'] = row.tahun
invoice_id['SptNo'] = row.sptno invoice_id['SptNo'] = row.sptno
Inquiry = self.get_inquiry_class()
inq = Inquiry(invoice_id.get_raw(), persen_denda=self.persen_denda) inq = Inquiry(invoice_id.get_raw(), persen_denda=self.persen_denda)
if not inq.total: if not inq.total:
return return
return '{} {}, {}, Rp {}'.format( return '{} {} {} Rp {}'.format(
invoice_id.get_raw(), row.rekeningkd, row.rekeningnm, invoice_id.get_raw(), row.rekeningkd, row.rekeningnm,
thousand(inq.total)) thousand(inq.total))
from opensipkd.pad.services.default import (
Inquiry as BaseInquiry,
Reversal as BaseReversal,
AvailableInvoice as BaseAvailableInvoice,
)
from opensipkd.pad.models.tangsel import (
Kecamatan,
Kelurahan,
Customer,
CustomerUsaha,
Invoice,
Payment,
Pajak,
Rekening,
Usaha,
)
class Inquiry(BaseInquiry):
def get_kecamatan_model(self): # Override
return Kecamatan
def get_kelurahan_model(self): # Override
return Kelurahan
def get_customer_model(self): # Override
return Customer
def get_usaha_model(self): # Override
return Usaha
def get_customer_usaha_model(self): # Override
return CustomerUsaha
def get_rekening_model(self): # Override
return Rekening
def get_pajak_model(self): # Override
return Pajak
def get_invoice_model(self): # Override
return Invoice
def get_payment_model(self): # Override
return Payment
class Reversal(BaseReversal):
def get_invoice_model(self): # Override
return Invoice
def get_payment_model(self): # Override
return Payment
class AvailableInvoice(BaseAvailableInvoice):
def get_invoice_model(self): # Override
return Invoice
def get_pajak_model(self): # Override
return Pajak
def get_rekening_model(self): # Override
return Rekening
def get_usaha_model(self): # Override
return Usaha
def get_customer_usaha_model(self): # Override
return CustomerUsaha
def get_inquiry_class(self): # Override
return Inquiry
...@@ -10,11 +10,19 @@ with open('CHANGES.txt') as f: ...@@ -10,11 +10,19 @@ with open('CHANGES.txt') as f:
line = CHANGES.splitlines()[0] line = CHANGES.splitlines()[0]
version = line.split()[0] version = line.split()[0]
req_opensipkd_hitung = 'opensipkd-hitung @ '\
'git+https://git.opensipkd.com/sugiana/opensipkd-hitung',
requires = [ requires = [
'sqlalchemy', 'sqlalchemy',
'opensipkd-hitung @ git+https://git.opensipkd.com/sugiana/opensipkd-hitung', req_opensipkd_hitung,
] ]
script_available_inv = 'pad_available_invoice = '\
'opensipkd.pad.scripts.available_invoice:main'
script_inq = 'pad_inquiry = opensipkd.pad.scripts.inquiry:main'
setuptools.setup( setuptools.setup(
name='opensipkd-pad-models', name='opensipkd-pad-models',
version=version, version=version,
...@@ -32,8 +40,8 @@ setuptools.setup( ...@@ -32,8 +40,8 @@ setuptools.setup(
], ],
entry_points={ entry_points={
'console_scripts': [ 'console_scripts': [
'pad_available_invoice = opensipkd.pad.scripts.available_invoice:main', script_available_inv,
'pad_inquiry = opensipkd.pad.scripts.inquiry:main', script_inq,
] ]
}, },
) )
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!