Commit 606e521f by Owo Sugiana

Bug fixed payment Kota Sukabumi

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