Commit 606e521f by Owo Sugiana

Bug fixed payment Kota Sukabumi

1 parent 420ae25c
......@@ -10,6 +10,9 @@ import sismiop.services.base
from sismiop.services.base import thousand
registry = dict()
def show_val(label, value):
if value is None:
value = ''
......@@ -75,6 +78,14 @@ def show_inquiry(inq):
show_field(inq.invoice, 'pbb_terhutang_sppt')
show_field(inq.invoice, 'faktor_pengurang_sppt')
for pay in inq.query_payments():
if registry['module_name'] == 'sukabumi_kota':
show_fields(
pay, ['PEMBAYARAN_SPPT_KE', 'KD_KANWIL', 'KD_KANTOR',
'KD_KANWIL_BANK', 'KD_KPPBB_BANK', 'KD_BANK_TUNGGAL',
'KD_BANK_PERSEPSI', 'KD_TP', 'TGL_REKAM_BYR_SPPT',
'TGL_PEMBAYARAN_SPPT', 'JML_SPPT_YG_DIBAYAR',
'JML_PBB_YG_DIBAYAR', 'DENDA_SPPT'])
else:
show_fields(
pay, ['pembayaran_sppt_ke', 'kd_kanwil', 'kd_kantor',
'kd_kanwil_bank', 'kd_kppbb_bank', 'kd_bank_tunggal',
......@@ -97,17 +108,28 @@ def show_attr(obj, attr, label):
show_rp(label, n)
def show_payment(module_name, inq, pay):
def show_payment(inq, pay):
if registry['module_name'] == 'sukabumi_kota':
print(
'Berhasil dibayar pada urutan ke-{}'.format(
pay.PEMBAYARAN_SPPT_KE))
print('Tabel PEMBAYARAN_SPPT')
show_fields(
pay, ['kd_kanwil', 'kd_kantor', 'kd_bank', 'kd_kanwil_bank',
'kd_kppbb_bank', 'kd_bank_tunggal', 'kd_bank_persepsi',
'kd_tp', 'jml_sppt_yg_dibayar', 'jml_pbb_yg_dibayar',
'denda_sppt'])
else:
print(
'Berhasil dibayar pada urutan ke-{}'.format(
pay.pembayaran_sppt_ke))
print('Tabel pembayaran_sppt')
show_fields(
pay, ['kd_kanwil', 'kd_kantor', 'kd_bank', 'kd_kanwil_bank',
'kd_kppbb_bank', 'kd_bank_tunggal', 'kd_bank_persepsi', 'kd_tp',
'jml_sppt_yg_dibayar', 'jml_pbb_yg_dibayar', 'denda_sppt',
'denda_sblm_diskon', 'discount_pokok', 'discount_denda',
'discount'])
'kd_kppbb_bank', 'kd_bank_tunggal', 'kd_bank_persepsi',
'kd_tp', 'jml_sppt_yg_dibayar', 'jml_pbb_yg_dibayar',
'denda_sppt', 'denda_sblm_diskon', 'discount_pokok',
'discount_denda', 'discount'])
try:
row, fields = inq.get_other_payment_table(pay)
except AttributeError:
......@@ -118,7 +140,15 @@ def show_payment(module_name, inq, pay):
show_fields(row, fields)
def show_reversal(module_name, inq, pay):
def show_reversal(inq, pay):
if registry['module_name'] == 'sukabumi_kota':
print(
'Pembayaran ke-{} berhasil dibatalkan'.format(
pay.PEMBAYARAN_SPPT_KE))
print('Tabel PEMBAYARAN_SPPT')
show_fields(
pay, ['JML_SPPT_YG_DIBAYAR', 'JML_PBB_YG_DIBAYAR', 'DENDA_SPPT'])
else:
print(
'Pembayaran ke-{} berhasil dibatalkan'.format(
pay.pembayaran_sppt_ke))
......@@ -151,18 +181,19 @@ def main(argv=sys.argv):
conf_file = option.conf
conf = ConfigParser()
conf.read(conf_file)
module_name = conf.get('main', 'module')
cf = dict(conf.items('main'))
registry['module_name'] = module_name = cf['module']
module = __import__('sismiop.services.' + module_name)
sub_module = getattr(module.services, module_name)
Inquiry = sub_module.Inquiry
Reversal = sub_module.Reversal
db_url = conf.get('main', 'db_url')
db_url = cf['db_url']
engine = create_engine(db_url)
engine.echo = option.sql_debug
session_factory = sessionmaker(bind=engine)
sismiop.services.base.DBSession = DBSession = session_factory()
register(sismiop.services.base.DBSession)
persen_denda = conf.getfloat('main', 'persen_denda')
persen_denda = float(cf['persen_denda'])
with transaction.manager:
inq = Inquiry(
invoice_id, persen_denda, tgl_bayar=tgl_bayar, debug=True)
......@@ -184,22 +215,29 @@ def main(argv=sys.argv):
if not inq.is_available():
print('Tagihan tidak diperkenankan dibayar melalui jalur ini.')
return
tp = dict(kd_tp=conf.get('main', 'kd_tp'))
if conf.has_option('main', 'kd_kantor'):
if cf['module'] == 'sukabumi_kota':
tp = dict(
KD_KANWIL_BANK=cf['kd_kanwil_bank'],
KD_KPPBB_BANK=cf['kd_kppbb_bank'],
KD_BANK_TUNGGAL=cf['kd_bank_tunggal'],
KD_BANK_PERSEPSI=cf['kd_bank_persepsi'],
KD_TP=cf['kd_tp'])
else:
tp = dict(kd_tp=cf['kd_tp'])
if cf.get('kd_kantor'):
tp.update(dict(
kd_kanwil=conf.get('main', 'kd_kanwil'),
kd_kantor=conf.get('main', 'kd_kantor')))
if conf.has_option('main', 'kd_kanwil_bank'):
kd_kanwil=cf['kd_kanwil'],
kd_kantor=cf['kd_kantor']))
if cf.get('kd_kanwil_bank'):
tp.update(dict(
kd_kanwil_bank=conf.get('main', 'kd_kanwil_bank'),
kd_kppbb_bank=conf.get('main', 'kd_kppbb_bank')))
if conf.has_option('main', 'kd_bank_tunggal'):
kd_kanwil_bank=cf['kd_kanwil_bank'],
kd_kppbb_bank=cf['kd_kppbb_bank']))
if cf.get('kd_bank_tunggal'):
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')
pay = inq.do_payment(tp, nip)
show_payment(module_name, inq, pay)
kd_bank_tunggal=cf['kd_bank_tunggal'],
kd_bank_persepsi=cf['kd_bank_persepsi']))
pay = inq.do_payment(tp, cf['nip_pencatat'])
show_payment(inq, pay)
if option.reversal:
rev = Reversal(invoice_id)
pay = rev.payment
......@@ -207,7 +245,7 @@ def main(argv=sys.argv):
print(ERR_PAYMENT_NOT_FOUND)
return
rev.do_reversal()
show_reversal(module_name, inq, pay)
show_reversal(inq, pay)
if option.update_status_bayar:
if inq.total == 0:
if inq.invoice.status_pembayaran_sppt == '0':
......
from datetime import datetime
from sqlalchemy import func
from ..models.sukabumi_kota import (
Objek,
......@@ -12,7 +13,10 @@ from .default import (
Inquiry as BaseInquiry,
Reversal as BaseReversal,
)
from .base import get_db_session
from .base import (
get_db_session,
Query,
)
def get_nop(row):
......@@ -156,14 +160,63 @@ class Inquiry(BaseInquiry):
def get_propinsi_model(self): # Override
return Propinsi
def invoice2payment(self):
Payment = self.get_payment_model()
q = self.query_payment()
q = q.order_by(Payment.PEMBAYARAN_SPPT_KE.desc())
return q.first()
def do_payment(self, bank_fields, nip_pencatat):
DBSession = get_db_session()
bayar = self.invoice2payment()
if bayar:
ke = bayar.PEMBAYARAN_SPPT_KE + 1
else:
ke = 1
inv = self.invoice
d = dict(
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,
NIP_REKAM_BYR_SPPT=nip_pencatat,
JML_SPPT_YG_DIBAYAR=self.total,
DENDA_SPPT=self.denda)
Payment = self.get_payment_model()
for key, value in bank_fields.items():
d[key] = value
bayar = Payment(**d)
DBSession.add(bayar)
self.invoice.STATUS_PEMBAYARAN_SPPT = '1' # Lunas
DBSession.add(self.invoice)
return bayar
class Reversal(Inquiry):
def __init__(self, invoice_id):
Query.__init__(self, invoice_id)
self.payment = None
if not self.invoice:
return
if self.invoice.STATUS_PEMBAYARAN_SPPT != '1':
return
self.payment = self.invoice2payment()
class Reversal(BaseReversal):
def get_invoice_model(self): # Override
return Sppt
def get_payment_model(self): # Override
return PembayaranSppt
def do_reversal(self):
DBSession = get_db_session()
self.payment.JML_SPPT_YG_DIBAYAR = self.payment.DENDA_SPPT = 0
DBSession.add(self.payment)
self.invoice.STATUS_PEMBAYARAN_SPPT = '0'
DBSession.add(self.invoice)
class AvailableInvoice(BaseAvailableInvoice):
def get_inquiry_class(self): # Override
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!