Commit e4752c24 by Owo Sugiana

Konfigurasi rekening tanpa denda

1 parent 21d4f347
0.3 2023-05-10
--------------
- Tambah input parameter conf pada Inquiry untuk rekening tanpa denda
0.2.3 2023-04-11 0.2.3 2023-04-11
---------------- ----------------
- Bug fixed saat reversal field bunga belum di-nol-kan - Bug fixed saat reversal field bunga belum di-nol-kan
......
...@@ -18,6 +18,7 @@ def get_option(argv): ...@@ -18,6 +18,7 @@ def get_option(argv):
pars.add_argument('--nominal-min', type=int) pars.add_argument('--nominal-min', type=int)
pars.add_argument('--nominal-max', type=int) pars.add_argument('--nominal-max', type=int)
pars.add_argument('--berbunga', action='store_true') pars.add_argument('--berbunga', action='store_true')
pars.add_argument('--rekening')
pars.add_argument( pars.add_argument(
'--count', type=int, default=default_count, help=help_count) '--count', type=int, default=default_count, help=help_count)
return pars.parse_args(argv) return pars.parse_args(argv)
......
...@@ -106,16 +106,16 @@ def main(argv=sys.argv[1:]): ...@@ -106,16 +106,16 @@ def main(argv=sys.argv[1:]):
invoice_id = option.invoice_id invoice_id = option.invoice_id
tgl_bayar = date_from_str(option.tgl_bayar) tgl_bayar = date_from_str(option.tgl_bayar)
conf = get_conf(option.conf) conf = get_conf(option.conf)
module_name = conf.get('main', 'module') cf = dict(conf.items('main'))
db_url = conf.get('main', 'db_url') cf['persen_denda'] = float(cf['persen_denda'])
engine = create_engine(db_url) cf['rekening_tanpa_denda'] = cf.get('rekening_tanpa_denda', '').split()
module = __import__('opensipkd.webr.services.' + module_name) engine = create_engine(cf['db_url'])
services = getattr(module.webr.services, module_name) module = __import__('opensipkd.webr.services.' + cf['module'])
services = getattr(module.webr.services, cf['module'])
session_factory = sessionmaker(bind=engine) session_factory = sessionmaker(bind=engine)
module.webr.services.base.DBSession = db_session = session_factory() module.webr.services.base.DBSession = db_session = session_factory()
register(module.webr.services.base.DBSession) register(module.webr.services.base.DBSession)
inq = services.Inquiry( inq = services.Inquiry(invoice_id, cf['persen_denda'], tgl_bayar, conf=cf)
invoice_id, conf.getfloat('main', 'persen_denda'), tgl_bayar)
if not inq.invoice: if not inq.invoice:
error(f'Invoice ID {invoice_id} tidak ada.') error(f'Invoice ID {invoice_id} tidak ada.')
show(inq) show(inq)
......
...@@ -37,10 +37,12 @@ class Inquiry: ...@@ -37,10 +37,12 @@ class Inquiry:
payment_model = Payment payment_model = Payment
ntp_cls = NTP ntp_cls = NTP
def __init__(self, invoice_id, persen_denda=2, tgl_bayar=None): def __init__(
self, invoice_id, persen_denda=2, tgl_bayar=None, conf=dict()):
self.invoice_id = invoice_id self.invoice_id = invoice_id
self.persen_denda = persen_denda self.persen_denda = persen_denda
self.tgl_bayar = tgl_bayar or date.today() self.tgl_bayar = tgl_bayar or date.today()
self.conf = conf
DBSession = get_db_session() DBSession = get_db_session()
q = DBSession.query(self.invoice_model).filter_by(kode=invoice_id) q = DBSession.query(self.invoice_model).filter_by(kode=invoice_id)
self.invoice = q.first() self.invoice = q.first()
...@@ -81,6 +83,9 @@ class Inquiry: ...@@ -81,6 +83,9 @@ class Inquiry:
bln, denda_waktu = hitung_denda( bln, denda_waktu = hitung_denda(
self.tagihan, self.invoice.jatuh_tempo, self.persen_denda, self.tagihan, self.invoice.jatuh_tempo, self.persen_denda,
self.tgl_bayar) self.tgl_bayar)
rek_tanpa_denda = self.conf.get('rekening_tanpa_denda', [])
if self.invoice.rekening_kode in rek_tanpa_denda:
denda_waktu = 0
self.denda = denda_waktu + bunga self.denda = denda_waktu + bunga
self.denda = round_up(self.denda) self.denda = round_up(self.denda)
self.total = self.tagihan + self.denda self.total = self.tagihan + self.denda
...@@ -224,6 +229,7 @@ class AvailableInvoice: ...@@ -224,6 +229,7 @@ class AvailableInvoice:
q = self.get_filter_nominal(q) q = self.get_filter_nominal(q)
q = self.get_filter_jatuh_tempo(q) q = self.get_filter_jatuh_tempo(q)
q = self.get_filter_berbunga(q) q = self.get_filter_berbunga(q)
q = self.get_filter_rekening(q)
return q return q
def get_filter_tahun(self, q): def get_filter_tahun(self, q):
...@@ -256,6 +262,12 @@ class AvailableInvoice: ...@@ -256,6 +262,12 @@ class AvailableInvoice:
q = q.filter(self.invoice_model.bunga > 0) q = q.filter(self.invoice_model.bunga > 0)
return q return q
def get_filter_rekening(self, q):
if self.option.rekening:
q = q.filter(
self.invoice_model.rekening_kode == self.option.rekening)
return q
def get_message(self, row): def get_message(self, row):
inq = Inquiry(row.kode, persen_denda=self.persen_denda) inq = Inquiry(row.kode, persen_denda=self.persen_denda)
if not inq.total: if not inq.total:
......
...@@ -12,6 +12,8 @@ version = line.split()[0] ...@@ -12,6 +12,8 @@ version = line.split()[0]
requires = [ requires = [
'sqlalchemy', 'sqlalchemy',
'opensipkd-hitung @ '
'git+https://git.opensipkd.com/sugiana/opensipkd-hitung.git',
'opensipkd-base @ ' 'opensipkd-base @ '
'git+https://git.opensipkd.com/sugiana/opensipkd-base.git', 'git+https://git.opensipkd.com/sugiana/opensipkd-base.git',
] ]
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!