Commit e7aa398c by Owo Sugiana

Tambah Provinsi Jawa Barat

1 parent 58cfcaf0
0.2 2021-01-11
--------------
- Tambah Provinsi Jawa Barat
0.1 2019-10-10
--------------
- Kali pertama
from sqlalchemy import (
Column,
Integer,
String,
Float,
Date,
DateTime,
)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Unit(Base):
__tablename__ = 'units'
id = Column(Integer, primary_key=True)
kode = Column(String(64), unique=True)
nama = Column(String(128))
level_id = Column(Integer)
is_summary = Column(Integer)
parent_id = Column(Integer)
alamat = Column(String(255))
id_old = Column(Integer)
nama_old = Column(String(128))
class Wilayah(Base):
__tablename__ = 'wilayahs'
id = Column(Integer, primary_key=True)
kode = Column(String(24), unique=True)
nama = Column(String(128))
level_id = Column(Integer)
parent_id = Column(Integer, ForeignKey('wilayahs.id'))
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
user_name = Column(String(30), unique=True)
user_password = Column(String(256))
email = Column(String(100), nullable=False, unique=True)
status = Column(Integer, nullable=False)
security_code = Column(String(256))
last_login_date = Column(DateTime)
registered_date = Column(DateTime)
security_code_date = Column(DateTime)
api_key = Column(String(256))
class Subjek(Base):
__tablename__ = 'subjekpajaks'
id = Column(Integer, primary_key=True)
kode = Column(String(64))
nama = Column(String(128))
status_grid = Column(Integer, nullable=False)
status = Column(Integer)
alamat_1 = Column(String(128))
alamat_2 = Column(String(128))
kelurahan = Column(String(128))
kecamatan = Column(String(128))
kota = Column(String(128))
user_id = Column(Integer, ForeignKey(User.id))
provinsi = Column(String(128))
email = Column(String(64))
unit_id = Column(Integer, ForeignKey(Unit.id))
no_id = Column(Integer)
class Objek(Base):
__tablename__ = 'objekpajaks'
id = Column(Integer, primary_key=True)
kode = Column(String(64))
nama = Column(String(128))
status_grid = Column(Integer, nullable=False)
status = Column(Integer)
alamat_1 = Column(String(128))
alamat_2 = Column(String(128))
wilayah_id = Column(Integer, ForeignKey(Wilayah.id))
unit_id = Column(Integer, ForeignKey(Unit.id))
pajak_id = Column(Integer, ForeignKey(Pajak.id))
subjekpajak_id = Column(Integer, ForeignKey(Subjek.id))
__table_args__ = UniqueConstraint('subjekpajak_id', 'kode')
class Rekening(Base):
__tablename__ = 'rekenings'
id = Column(Integer, primary_key=True)
kode = Column(String(24), unique=True)
nama = Column(String(225))
level_id = Column(Integer)
is_summary = Column(Integer)
parent_id = Column(Integer)
class Invoice(Base):
__tablename__ = 'arinvoices'
id = Column(Integer, primary_key=True)
tahun_id = Column(Integer)
unit_id = Column(Integer, ForeignKey(Unit.id))
no_id = Column(Integer)
subjek_pajak_id = Column(Integer, ForeignKey(Subjek.id))
objek_pajak_id = Column(Integer, ForeignKey(Objek.id))
kode = Column(String(32), unique=True)
unit_kode = Column(String(128))
unit_nama = Column(String(128))
rekening_id = Column(Integer, ForeignKey(Rekening.id))
rek_kode = Column(String(128))
rek_nama = Column(String(128))
wp_kode = Column(String(128))
wp_nama = Column(String(500))
wp_alamat_1 = Column(String(128))
wp_alamat_2 = Column(String(128))
op_kode = Column(String(128))
op_nama = Column(String(128))
op_alamat_1 = Column(String(128))
op_alamat_2 = Column(String(128))
dasar = Column(Integer)
tarif = Column(Float)
pokok = Column(Integer)
denda = Column(Integer)
bunga = Column(Integer)
jumlah = Column(Integer)
periode_1 = Column(Date)
periode_2 = Column(Date)
tgl_tetap = Column(Date)
jatuh_tempo = Column(Date)
status_grid = Column(Integer, nullable=False)
status_bayar = Column(Integer, nullable=False)
is_sspd = Column(Integer, nullable=False)
is_tbp = Column(Integer, nullable=False)
is_sts = Column(Integer, nullable=False)
owner_id = Column(Integer)
wilayah_id = Column(Integer, ForeignKey(Wilayah.id))
create_uid = Column(Integer)
update_uid = Column(Integer)
create_date = Column(DateTime(timezone=True))
update_date = Column(DateTime(timezone=True))
denda_rekening_id = Column(Integer)
no_skrd = Column(String(128))
pejabat_nama = Column(String(64))
pejabat_pangkat = Column(String(64))
pejabat_nip = Column(String(64))
keterangan = Column(String(1024))
class Payment(Base):
__tablename__ = 'arsspds'
id = Column(Integer, primary_key=True)
tahun_id = Column(Integer)
unit_id = Column(Integer, ForeignKey(Unit.id))
arinvoice_id = Column(Integer, ForeignKey(Invoice.id))
pembayaran_ke = Column(Integer)
bunga = Column(Integer)
bayar = Column(Integer)
tgl_bayar = Column(DateTime)
create_uid = Column(Integer)
update_uid = Column(Integer)
create_date = Column(DateTime(timezone=True))
update_date = Column(DateTime(timezone=True))
posted = Column(Integer, nullable=False)
ntb = Column(String(20))
ntp = Column(String(20))
bank_id = Column(Integer)
channel_id = Column(Integer)
denda_rekening_id = Column(Integer)
unit_kode = Column(String(32))
unit_nama = Column(String(128))
rekening_id = Column(Integer)
rek_kode = Column(String(64))
rek_nama = Column(String(128))
......@@ -103,14 +103,14 @@ def main(argv=sys.argv[1:]):
invoice_id = option.invoice_id
tgl_bayar = date_from_str(option.tgl_bayar)
conf = get_conf(option.conf)
module_name = 'services'
module_name = conf.get('main', 'module')
db_url = conf.get('main', 'db_url')
engine = create_engine(db_url)
module = __import__('opensipkd.webr.' + module_name)
services = getattr(module.webr, module_name)
module = __import__('opensipkd.webr.services.' + module_name)
services = getattr(module.webr.services, module_name)
session_factory = sessionmaker(bind=engine)
module.webr.services.DBSession = db_session = session_factory()
register(module.webr.services.DBSession)
module.webr.services.base.DBSession = db_session = session_factory()
register(module.webr.services.base.DBSession)
inq = services.Inquiry(
invoice_id, conf.getfloat('main', 'persen_denda'), tgl_bayar)
if not inq.invoice:
......
DBSession = None
def get_db_session():
return DBSession
......@@ -10,17 +10,11 @@ from opensipkd.hitung import (
)
from opensipkd.string.money import thousand
from opensipkd.string.transaction_id import TransactionID
from .models import (
from ..models.default import (
Invoice,
Payment,
)
DBSession = None
def get_db_session():
return DBSession
from .base import get_db_session
def date_from_str(s):
......@@ -30,34 +24,41 @@ def date_from_str(s):
# Nomor Transaksi Pemda
class NTP(TransactionID):
payment_model = Payment
def is_found(self, tid):
DBSession = get_db_session()
q = DBSession.query(Payment).filter_by(kode=tid)
q = DBSession.query(self.payment_model).filter_by(kode=tid)
return q.first()
class Inquiry:
invoice_model = Invoice
payment_model = Payment
ntp_cls = NTP
def __init__(self, invoice_id, persen_denda=2, tgl_bayar=None):
self.invoice_id = invoice_id
self.persen_denda = persen_denda
self.tgl_bayar = tgl_bayar or date.today()
DBSession = get_db_session()
q = DBSession.query(Invoice).filter_by(kode=invoice_id)
q = DBSession.query(self.invoice_model).filter_by(kode=invoice_id)
self.invoice = q.first()
if self.invoice:
self.hitung()
def get_payment(self):
DBSession = get_db_session()
q = DBSession.query(Payment).filter_by(ar_invoice_id=self.invoice.id)
q = q.filter(Payment.bayar > 0)
q = q.order_by(Payment.pembayaran_ke.desc())
q = DBSession.query(self.payment_model).filter_by(
ar_invoice_id=self.invoice.id)
q = q.filter(self.payment_model.bayar > 0)
q = q.order_by(self.payment_model.pembayaran_ke.desc())
return q.first()
def get_total_payment(self):
DBSession = get_db_session()
q = DBSession.query(
func.sum(Payment.bayar).label('jml'))
func.sum(self.payment_model.bayar).label('jml'))
q = q.filter_by(ar_invoice_id=self.invoice.id)
pay = q.first()
return pay and pay.jml or 0
......@@ -83,32 +84,34 @@ class Inquiry:
return self.invoice.status == 0
def get_nama(self):
return self.invoice.subjek_nama
return self.invoice.subjek_nama.upper()
def get_alamat_1(self):
return self.invoice.objek_alamat_1
if self.invoice.objek_alamat_1:
return self.invoice.objek_alamat_1.upper()
def get_alamat_2(self):
return self.invoice.objek_alamat_2
if self.invoice.objek_alamat_2:
return self.invoice.objek_alamat_2.upper()
def get_kode_rekening(self):
return self.invoice.rekening_kode
def get_nama_rekening(self):
return self.invoice.rekening_nama
return self.invoice.rekening_nama.upper()
def get_kode_departemen(self):
return self.invoice.departemen_kode
def get_nama_departemen(self):
return self.invoice.departemen_nama
return self.invoice.departemen_nama.upper()
def get_no_urut(self):
DBSession = get_db_session()
q = DBSession.query(Payment).filter_by(
q = DBSession.query(self.payment_model).filter_by(
tahun=self.invoice.tahun,
departemen_id=self.invoice.departemen_id)
q = q.order_by(Payment.no_urut.desc())
q = q.order_by(self.payment_model.no_urut.desc())
row = q.first()
if row:
return row.no_urut + 1
......@@ -116,8 +119,9 @@ class Inquiry:
def get_pembayaran_ke(self):
DBSession = get_db_session()
q = DBSession.query(Payment).filter_by(ar_invoice_id=self.invoice.id)
q = q.order_by(Payment.pembayaran_ke.desc())
q = DBSession.query(self.payment_model).filter_by(
ar_invoice_id=self.invoice.id)
q = q.order_by(self.payment_model.pembayaran_ke.desc())
row = q.first()
if row:
return row.pembayaran_ke + 1
......@@ -125,12 +129,12 @@ class Inquiry:
def do_payment(self, ntb, bank_id=None, channel_id=None):
DBSession = get_db_session()
ntp_generator = NTP()
ntp_generator = self.ntp_cls()
ntp = ntp_generator.create()
no_urut = self.get_no_urut()
pembayaran_ke = self.get_pembayaran_ke()
created = datetime.now()
pay = Payment(
pay = self.payment_model(
kode=ntp,
status=1,
created=created,
......@@ -201,7 +205,7 @@ class AvailableInvoice:
def get_query(self):
DBSession = get_db_session()
q = DBSession.query(Invoice).filter_by(status=0)
q = DBSession.query(self.invoice_model).filter_by(status=0)
q = self.get_filter_tahun(q)
q = self.get_filter_nominal(q)
q = self.get_filter_jatuh_tempo(q)
......@@ -215,21 +219,21 @@ class AvailableInvoice:
def get_filter_nominal(self, q):
if self.option.nominal_min:
q = q.filter(
Invoice.jumlah - Invoice.bunga >=
self.invoice_model.jumlah - self.invoice_model.bunga >=
self.option.nominal_min)
if self.option.nominal_max:
q = q.filter(
Invoice.jumlah - Invoice.bunga <=
self.invoice_model.jumlah - self.invoice_model.bunga <=
self.option.nominal_max)
return q
def get_filter_jatuh_tempo(self, q):
if self.option.jatuh_tempo_min:
tgl = date_from_str(self.option.jatuh_tempo_min)
q = q.filter(Invoice.jatuh_tempo >= tgl)
q = q.filter(self.invoice_model.jatuh_tempo >= tgl)
if self.option.jatuh_tempo_max:
tgl = date_from_str(self.option.jatuh_tempo_max)
q = q.filter(Invoice.jatuh_tempo <= tgl)
q = q.filter(self.invoice_model.jatuh_tempo <= tgl)
return q
def get_message(self, row):
......
from .default import AvailableInvoice
from ..models.jabar import (
Invoice,
Payment,
)
class AvailableInvoice(BaseAvailableInvoice):
invoice_model = Invoice # Override
payment_model = Payment # Override
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!