Commit c0f502a7 by Owo Sugiana

Kode bayar di tabel t_pembayaranspt

1 parent a926cbbc
0.1.2 2019-08-02
----------------
- Bug fixed dimana kode bayar ada di tabel t_pembayaranspt.
0.1.1 2019-07-10
----------------
- Bug fixed nomor urut pada AvailableInvoice.
......
......@@ -7,6 +7,7 @@ from opensipkd.base.models import DBSession
from opensipkd.bphtb.cilegon.models import (
Spt,
DetailSpt,
Pembayaran,
)
import opensipkd.bphtb.cilegon.services
......@@ -43,7 +44,9 @@ class AvailableInvoice:
break
def row_handler(self, inv):
inq = Inquiry(inv.t_idspt, registry['persen_denda'])
q = DBSession.query(Pembayaran).filter_by(t_idspt=inv.t_idspt)
pay = q.first()
inq = Inquiry(pay.t_kodebayarbanksppt, registry['persen_denda'])
if not inq.total:
return
self.no += 1
......@@ -51,7 +54,7 @@ class AvailableInvoice:
q = DBSession.query(DetailSpt).filter_by(t_idspt=inv.t_idspt)
op = q.first()
msg = '#{} {} {} {} {} Rp {}'.format(
self.no, inv.t_idspt, inv.t_periodespt, inv.t_nopbphtbsppt,
self.no, pay.t_kodebayarbanksppt, inv.t_periodespt, inv.t_nopbphtbsppt,
op.t_namawppembeli, nominal)
print(msg)
......
......@@ -40,7 +40,7 @@ def show_rp(label, value):
def get_option(argv):
pars = OptionParser()
pars.add_option('-i', '--invoice-id', type='int')
pars.add_option('-i', '--invoice-id')
pars.add_option('', '--payment', action='store_true')
pars.add_option('', '--reversal', action='store_true')
return pars.parse_args(argv)
......
......@@ -17,13 +17,23 @@ DBSession = None # override, please
class Inquiry:
def __init__(self, invoice_id, persen_denda=2):
self.invoice_id = invoice_id
q = DBSession.query(Spt).filter_by(t_idspt=invoice_id)
q = DBSession.query(Pembayaran).filter_by(
t_kodebayarbanksppt=invoice_id).order_by(
Pembayaran.t_idpembayaranspt)
self.payment = q.first()
if not self.payment:
self.invoice = None
return
q = DBSession.query(Spt).filter_by(t_idspt=self.payment.t_idspt)
self.invoice = q.first()
if not self.invoice:
return
self.profile = self.get_profile()
self.notaris = self.get_notaris()
self.total_bayar = self.get_payment_amount()
if self.payment.t_statusbayarspt:
self.tagihan = self.denda = self.total = 0
return
self.tagihan = self.invoice.t_totalspt
self.total = self.tagihan - self.total_bayar
if self.total <= 0:
......@@ -38,7 +48,7 @@ class Inquiry:
self.total = self.total - self.denda
def get_profile(self):
q = DBSession.query(DetailSpt).filter_by(t_idspt=self.invoice_id)
q = DBSession.query(DetailSpt).filter_by(t_idspt=self.invoice.t_idspt)
return q.first()
def get_notaris(self):
......@@ -112,19 +122,17 @@ class Inquiry:
def get_payment_amount(self):
q = DBSession.query(
func.sum(Pembayaran.t_nilaipembayaranspt).label('jml'))
q = q.filter_by(t_idspt=self.invoice_id, t_statusbayarspt=True)
q = q.filter_by(t_idspt=self.invoice.t_idspt, t_statusbayarspt=True)
row = q.first()
return row.jml or 0
def do_payment(self, ntb):
pay = Pembayaran(t_idspt=self.invoice_id)
pay.t_tanggalpembayaran = date.today()
pay.t_nilaipembayaranspt = self.total
pay.t_statusbayarspt = True
pay.t_kodebayarbanksppt = ntb
DBSession.add(pay)
self.payment.t_tanggalpembayaran = date.today()
self.payment.t_nilaipembayaranspt = self.total
self.payment.t_statusbayarspt = True
DBSession.add(self.payment)
DBSession.flush()
return pay
return self.payment
class Reversal:
......@@ -133,9 +141,9 @@ class Reversal:
self.payment = self.get_last_payment()
def get_last_payment(self):
q = DBSession.query(Pembayaran)
q = q.filter_by(t_idspt=self.invoice_id)
q = q.order_by(Pembayaran.t_idpembayaranspt.desc())
q = DBSession.query(Pembayaran).filter_by(
t_kodebayarbanksppt=self.invoice_id).order_by(
Pembayaran.t_idpembayaranspt)
return q.first()
def do_reversal(self):
......
......@@ -20,7 +20,7 @@ setuptools.setup(
version=version,
author='Owo Sugiana',
author_email='sugiana@gmail.com',
description='Struktur tabel ISO 8583',
description='Struktur tabel BPHTB',
long_description=long_description,
long_description_content_type='text/markdown',
license='PostgreSQL License',
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!