Commit d7e83800 by Owo Sugiana

Perubahan rumus tangkota

1 parent 8bfd26fd
0.1.12 2020-09-29 0.1.12 2020-09-30
----------------- -----------------
- Perubahan rumus tangkota
- Perubahan rumus bogor_kota - Perubahan rumus bogor_kota
0.1.11 2020-09-28 0.1.11 2020-09-28
......
...@@ -12,6 +12,8 @@ def get_option(argv): ...@@ -12,6 +12,8 @@ def get_option(argv):
pars = ArgumentParser() pars = ArgumentParser()
pars.add_argument('conf') pars.add_argument('conf')
pars.add_argument('--tahun') pars.add_argument('--tahun')
pars.add_argument('--min-nominal', type=int)
pars.add_argument('--max-nominal', type=int)
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)
...@@ -32,7 +34,7 @@ def main(argv=sys.argv): ...@@ -32,7 +34,7 @@ def main(argv=sys.argv):
engine = create_engine(db_url) engine = create_engine(db_url)
session_factory = sessionmaker(bind=engine) session_factory = sessionmaker(bind=engine)
sismiop.services.base.DBSession = session_factory() sismiop.services.base.DBSession = session_factory()
a = AvailableInvoice(persen_denda, count, option.tahun) a = AvailableInvoice(persen_denda, option)
a.show() a.show()
......
...@@ -342,15 +342,27 @@ def not_null(invoice): ...@@ -342,15 +342,27 @@ def not_null(invoice):
class AvailableInvoice(Query): class AvailableInvoice(Query):
def __init__(self, persen_denda=2, count=10, tahun=None): def __init__(self, persen_denda=2, option=None):
self.count = count self.count = option.count
self.persen_denda = persen_denda self.persen_denda = persen_denda
self.tahun = tahun self.tahun = option.tahun
self.option = option
def get_inquiry_class(self): def get_inquiry_class(self):
return Inquiry return Inquiry
def get_filter(self, q): def get_filter(self, q):
Invoice = self.get_invoice_model()
if self.option.tahun:
q = q.filter_by(thn_pajak_sppt=self.option.tahun)
if self.option.min_nominal:
q = q.filter(
Invoice.pbb_yg_harus_dibayar_sppt >=
self.option.min_nominal)
if self.option.max_nominal:
q = q.filter(
Invoice.pbb_yg_harus_dibayar_sppt <=
self.option.max_nominal)
return q return q
def show(self): def show(self):
...@@ -374,8 +386,6 @@ class AvailableInvoice(Query): ...@@ -374,8 +386,6 @@ class AvailableInvoice(Query):
break break
offset += 1 offset += 1
q = DBSession.query(Invoice).filter_by(status_pembayaran_sppt='0') q = DBSession.query(Invoice).filter_by(status_pembayaran_sppt='0')
if self.tahun:
q = q.filter_by(thn_pajak_sppt=self.tahun)
q = self.get_filter(q) q = self.get_filter(q)
q = q.offset(offset).limit(1) q = q.offset(offset).limit(1)
inv = q.first() inv = q.first()
......
...@@ -8,6 +8,9 @@ from ..tangsel import ( ...@@ -8,6 +8,9 @@ from ..tangsel import (
from sismiop.models.tangsel import PembayaranSppt from sismiop.models.tangsel import PembayaranSppt
AWAL_DISC = date(2020, 10, 1)
AKHIR_DISC = date(2020, 12, 23)
TAHUN_PAJAK_DISC_POKOK = ['2020'] TAHUN_PAJAK_DISC_POKOK = ['2020']
PERIODE_DISC_POKOK = { PERIODE_DISC_POKOK = {
2020: { 2020: {
...@@ -35,25 +38,41 @@ PERIODE_DISC_POKOK = { ...@@ -35,25 +38,41 @@ PERIODE_DISC_POKOK = {
}, },
} }
AKHIR_DISC_DENDA = date(2020, 7, 31)
class Inquiry(BaseInquiry): class Inquiry(BaseInquiry):
def get_payment_model(self): def get_payment_model(self):
return PembayaranSppt return PembayaranSppt
def hitung_discount(self): # Override def hitung_discount(self): # Override
self.discount_denda = self.hitung_discount_denda() self.denda_sblm_diskon = self.denda
self.discount_pokok = self.hitung_discount_pokok() self.discount_denda = self.discount_pokok = 0
if self.tgl_bayar > AKHIR_DISC:
return
if self.tgl_bayar < AWAL_DISC:
self.discount_pokok = self.hitung_discount_pokok_2020_07_09()
else:
self.discount_denda = self.hitung_discount_denda()
self.discount_pokok = self.hitung_discount_pokok_2020_10_12()
self.discount = self.discount_denda + self.discount_pokok self.discount = self.discount_denda + self.discount_pokok
def hitung_discount_denda(self): def hitung_discount_denda(self):
self.denda_sblm_diskon = self.denda if self.invoice.thn_pajak_sppt > '2020':
if self.tgl_bayar > AKHIR_DISC_DENDA:
return 0 return 0
return self.denda return self.denda
def hitung_discount_pokok(self): def hitung_discount_pokok_2020_10_12(self):
thn = self.invoice.thn_pajak_sppt
if thn > '2019':
return 0
if thn < '2010':
disc = 0.2
elif thn < '2015':
disc = 0.15
else:
disc = 0.1
return int(disc * self.tagihan)
def hitung_discount_pokok_2020_07_09(self):
if self.invoice.thn_pajak_sppt not in TAHUN_PAJAK_DISC_POKOK: if self.invoice.thn_pajak_sppt not in TAHUN_PAJAK_DISC_POKOK:
return 0 return 0
if self.tgl_bayar.year not in PERIODE_DISC_POKOK: if self.tgl_bayar.year not in PERIODE_DISC_POKOK:
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!